VMware and Hyper-V expose passthrough devices to guest VMs without an explicit host bridge device. Consequently, host_bridge_whitelist() cannot automatically identify the underlying host bridge structure, causing Peer-to-Peer DMA (P2PDMA) requests to be rejected unless the device IDs are explicitly listed in pci_p2pdma_whitelist[]. To enable P2PDMA on Intel hosts, this series extends cpu_supports_p2pdma(), which so far covers AMD Zen and newer, with an explicit list of Intel Xeon server generations.
Patch 1 moves the CONFIG_X86 #ifdef out of cpu_supports_p2pdma(). Patch 2 is the v3 patch rebased on it, with Logan's Reviewed-by carried over; the Xeon list and the check are unchanged. Changes in v4: - Add 1/2, moving the CONFIG_X86 #ifdef out of cpu_supports_p2pdma() (Logan Gunthorpe, Leon Romanovsky) - Keep the #ifdef around the asm/ includes, as these headers exist only on x86 (Bjorn Helgaas) Changes in v3: - Drop the hypervisor check and move the Xeon list into cpu_supports_p2pdma(), next to the AMD check, as suggested by Logan Gunthorpe and Leon Romanovsky [1] - Fold the VMware and Hyper-V patches into one, as the check no longer depends on the hypervisor Changes in v2: - Replace the Skylake-and-newer threshold with an explicit list of Intel Xeon server generations, from Skylake-SP to Diamond Rapids (Logan Gunthorpe) - Move the CONFIG_X86 #ifdef out of hypervisor_supports_p2pdma() (Logan Gunthorpe) - Rebased on current mainline [1] https://lore.kernel.org/r/20261016153147.GC219304@unreal v3: https://lore.kernel.org/r/[email protected] v2: https://lore.kernel.org/r/[email protected] v1: https://lore.kernel.org/r/[email protected] Pavel Popov (2): PCI/P2PDMA: Move CONFIG_X86 #ifdef out of cpu_supports_p2pdma() PCI/P2PDMA: Allow P2PDMA on Intel Xeon server CPUs drivers/pci/p2pdma.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) base-commit: c03c1a14507dfaf8b856c2608f9ac216021fc222 -- 2.53.0
