[PATCH v4 0/2] PCI/P2PDMA: Allow P2PDMA on Intel Xeon server CPUs

From: Pavel Popov

Date: Tue Oct 20 2026 - 13:42:10 EST


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/20261020151305.65218-1-pavel.e.popov@xxxxxxxxx
v2: https://lore.kernel.org/r/20261016223402.19991-1-pavel.e.popov@xxxxxxxxx
v1: https://lore.kernel.org/r/20261009154034.82321-1-pavel.e.popov@xxxxxxxxx

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