A PCI function with its own _PXM still inherits a DMA tag carrying the upstream bridge's proximity domain. Resolving an SR-IOV VF's locality through its PF therefore does not affect the domain used for DMA allocations. Create and cache a private child tag when the function, or a VF's owning PF, has an explicit _PXM. Parent it to the existing PCI or IOMMU tag so its constraints remain intact, then apply the function's domain without mutating a shared tag. pci_get_dma_tag() already performs the IOMMU lookup, so remove the duplicated lookup in the ACPI subclass while here. MFC after: 2 weeks
Details
Details
- Reviewers
jhb markj - Commits
- rGf1f58bdf7b5f: acpi_pci: Honor device proximity for DMA tags
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
I would maybe split out the caching of the domain into a separate commit.
| sys/dev/acpica/acpi_pci.c | ||
|---|---|---|
| 571 | s/root/parent/? | |