Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Fri, 22 Jul 2011 23:39:42 +0000 (16:39 -0700)]
* 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  iommu/core: Fix build with INTR_REMAP=y && CONFIG_DMAR=n
  iommu/amd: Don't use MSI address range for DMA addresses
  iommu/amd: Move missing parts to drivers/iommu
  iommu: Move iommu Kconfig entries to submenu
  x86/ia64: intel-iommu: move to drivers/iommu/
  x86: amd_iommu: move to drivers/iommu/
  msm: iommu: move to drivers/iommu/
  drivers: iommu: move to a dedicated folder
  x86/amd-iommu: Store device alias as dev_data pointer
  x86/amd-iommu: Search for existind dev_data before allocting a new one
  x86/amd-iommu: Allow dev_data->alias to be NULL
  x86/amd-iommu: Use only dev_data in low-level domain attach/detach functions
  x86/amd-iommu: Use only dev_data for dte and iotlb flushing routines
  x86/amd-iommu: Store ATS state in dev_data
  x86/amd-iommu: Store devid in dev_data
  x86/amd-iommu: Introduce global dev_data_list
  x86/amd-iommu: Remove redundant device_flush_dte() calls
  iommu-api: Add missing header file

Fix up trivial conflicts (independent additions close to each other) in
drivers/Makefile and include/linux/pci.h

1  2 
arch/x86/Kconfig
drivers/Kconfig
drivers/Makefile
drivers/pci/Makefile
drivers/pci/pci.h
include/linux/pci.h

Simple merge
diff --cc drivers/Kconfig
Simple merge
@@@ -122,4 -122,4 +122,5 @@@ obj-y                              += ieee802154
  obj-y                         += clk/
  
  obj-$(CONFIG_HWSPINLOCK)      += hwspinlock/
 +obj-$(CONFIG_NFC)             += nfc/
+ obj-$(CONFIG_IOMMU_SUPPORT)   += iommu/
Simple merge
Simple merge
@@@ -1589,33 -1589,16 +1589,44 @@@ int pci_vpd_find_tag(const u8 *buf, uns
  int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off,
                              unsigned int len, const char *kw);
  
 +/* PCI <-> OF binding helpers */
 +#ifdef CONFIG_OF
 +struct device_node;
 +extern void pci_set_of_node(struct pci_dev *dev);
 +extern void pci_release_of_node(struct pci_dev *dev);
 +extern void pci_set_bus_of_node(struct pci_bus *bus);
 +extern void pci_release_bus_of_node(struct pci_bus *bus);
 +
 +/* Arch may override this (weak) */
 +extern struct device_node * __weak pcibios_get_phb_of_node(struct pci_bus *bus);
 +
 +static inline struct device_node *pci_device_to_OF_node(struct pci_dev *pdev)
 +{
 +      return pdev ? pdev->dev.of_node : NULL;
 +}
 +
 +static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus)
 +{
 +      return bus ? bus->dev.of_node : NULL;
 +}
 +
 +#else /* CONFIG_OF */
 +static inline void pci_set_of_node(struct pci_dev *dev) { }
 +static inline void pci_release_of_node(struct pci_dev *dev) { }
 +static inline void pci_set_bus_of_node(struct pci_bus *bus) { }
 +static inline void pci_release_bus_of_node(struct pci_bus *bus) { }
 +#endif  /* CONFIG_OF */
 +
+ /**
+  * pci_find_upstream_pcie_bridge - find upstream PCIe-to-PCI bridge of a device
+  * @pdev: the PCI device
+  *
+  * if the device is PCIE, return NULL
+  * if the device isn't connected to a PCIe bridge (that is its parent is a
+  * legacy PCI bridge and the bridge is directly connected to bus 0), return its
+  * parent
+  */
+ struct pci_dev *pci_find_upstream_pcie_bridge(struct pci_dev *pdev);
  #endif /* __KERNEL__ */
  #endif /* LINUX_PCI_H */