diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2020-01-29 17:00:02 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2020-01-29 17:00:02 -0600 |
commit | db83c269d22598ec1f5e3e6692a58a92a153e5f1 (patch) | |
tree | 153068534a8861bc6bb34be130861d7f6df2e971 /drivers/pci/pci.c | |
parent | c7417cf36aabb93f3b1e37b7e28bece46711429e (diff) | |
parent | db51b4c85fb756f33617c1d29643e57be9bd2f1d (diff) | |
download | linux-db83c269d22598ec1f5e3e6692a58a92a153e5f1.tar.bz2 |
Merge branch 'pci/host-vmd'
- Save VMD's pci_dev in x86 struct pci_sysdata (Jon Derrick)
- Add pci_real_dma_dev() for DMA aliases not on the same bus as requester
(Jon Derrick)
- Add IOMMU mappings for pci_real_dma_dev() (Jon Derrick)
- Remove IOMMU sanity checks for VMD devices (Jon Derrick)
- Remove VMD dma_map_ops overrides (Jon Derrick)
- Remove unused X86_DEV_DMA_OPS (Christoph Hellwig)
- Add VMD device IDs that need bus restriction mode (Sushma Kalakota)
* pci/host-vmd:
PCI: vmd: Add two VMD Device IDs
x86/PCI: Remove X86_DEV_DMA_OPS
PCI: vmd: Remove dma_map_ops overrides
iommu/vt-d: Remove VMD child device sanity check
iommu/vt-d: Use pci_real_dma_dev() for mapping
PCI: Introduce pci_real_dma_dev()
x86/PCI: Expose VMD's pci_dev in struct pci_sysdata
x86/PCI: Add to_pci_sysdata() helper
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r-- | drivers/pci/pci.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 581b17707646..36d24f29d0e3 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -6048,7 +6048,9 @@ bool pci_devs_are_dma_aliases(struct pci_dev *dev1, struct pci_dev *dev2) return (dev1->dma_alias_mask && test_bit(dev2->devfn, dev1->dma_alias_mask)) || (dev2->dma_alias_mask && - test_bit(dev1->devfn, dev2->dma_alias_mask)); + test_bit(dev1->devfn, dev2->dma_alias_mask)) || + pci_real_dma_dev(dev1) == dev2 || + pci_real_dma_dev(dev2) == dev1; } bool pci_device_is_present(struct pci_dev *pdev) @@ -6072,6 +6074,21 @@ void pci_ignore_hotplug(struct pci_dev *dev) } EXPORT_SYMBOL_GPL(pci_ignore_hotplug); +/** + * pci_real_dma_dev - Get PCI DMA device for PCI device + * @dev: the PCI device that may have a PCI DMA alias + * + * Permits the platform to provide architecture-specific functionality to + * devices needing to alias DMA to another PCI device on another PCI bus. If + * the PCI device is on the same bus, it is recommended to use + * pci_add_dma_alias(). This is the default implementation. Architecture + * implementations can override this. + */ +struct pci_dev __weak *pci_real_dma_dev(struct pci_dev *dev) +{ + return dev; +} + resource_size_t __weak pcibios_default_alignment(void) { return 0; |