On Tue, Oct 06, 2026 at 04:36:50PM -0500, Bjorn Helgaas wrote:
On Wed, Oct 07, 2026 at 12:22:27AM +0300, Leon Romanovsky wrote:
On Tue, Oct 06, 2026 at 02:29:55PM -0500, Bjorn Helgaas wrote:
On Thu, Oct 01, 2026 at 02:55:08PM +0300, Leon Romanovsky wrote:
PCI P2PDMA applies Request and Completion Redirect throughout both paths. This misclassifies asymmetric and nested switches, and reports one answer for every kind of TLP.
Three ACS controls act on TLP attributes the client chooses rather than on the topology: Translation Blocking and Direct Translated P2P act on a Request's Address Type, and Completion Redirect skips Completions carrying Relaxed Ordering.
Evaluate each direction at the path divergence, decide every class from the one walk, and treat a client with ATS enabled as translating unless its driver declares per-mapping ATS.
This completes the P2PDMA side; dma-buf and mlx5 follow separately. ...
Leon Romanovsky (18): PCI/P2PDMA: Document the TLP attribute assumptions PCI/P2PDMA: Derive routing from directional ACS controls PCI: Reject unreadable ACS controls in isolation checks PCI/P2PDMA: Evaluate ACS controls at the path divergence PCI/P2PDMA: Document directional ACS routing PCI/P2PDMA: Collect the path's ACS controls before deciding PCI/P2PDMA: Answer routing per TLP class PCI/P2PDMA: Route Relaxed Ordering Completions directly PCI/P2PDMA: Reject Translated Requests blocked by Translation Blocking PCI/P2PDMA: Route Translated Requests under Direct Translated P2P PCI/P2PDMA: Log detailed ACS routing diagnostics PCI/P2PDMA: Add KUnit tests for the ACS routing decisions PCI/P2PDMA: Test the ACS P2P routing walk PCI: Add KUnit coverage for ACS isolation checks PCI/P2PDMA: Document TLP-class routing PCI/P2PDMA: Let a client declare that it selects ATS per mapping PCI/P2PDMA: Evaluate the ATS path for clients with ATS enabled PCI/P2PDMA: Test the routing of clients with ATS enabled
Documentation/admin-guide/kernel-parameters.txt | 15 +- Documentation/driver-api/pci/p2pdma.rst | 80 +++ drivers/pci/Kconfig | 15 + drivers/pci/Makefile | 1 + drivers/pci/p2pdma.c | 719 ++++++++++++++++++-- drivers/pci/pci.c | 7 +- drivers/pci/pci.h | 58 ++ drivers/pci/pci_acs_test.c | 860 ++++++++++++++++++++++++ drivers/pci/quirks.c | 6 +- include/linux/pci-p2pdma.h | 12 +- 10 files changed, 1687 insertions(+), 86 deletions(-)
base-commit: 08dbfad3f5040f5bdb6c529da20d6d4e81fefd72 change-id: 20260821-fix-p2p-acs-v4-0-e72455e3a261 prerequisite-message-id: 20260830-batch-p2p-fixes-v1-0-5044e8dfbe2e@nvidia.com prerequisite-patch-id: 6b25c7fcf164cdfc14e9fac5b908d97fcf6509d7 prerequisite-patch-id: 0d083c281001365aae4b35544cf28891a6ab9a96 prerequisite-patch-id: bfd9dabf271f3cc9a3a61f46387d20c20311363d prerequisite-patch-id: fad0275efc722830fc591509506c0a5e4f581073 prerequisite-patch-id: 0c83bee688fec1f6d1564654df7c630fa6a4a978
This seems like material for the PCI tree, but I'm not sure how to apply it. It doesn't apply cleanly on the current pci/p2pdma (https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git/log/?h=p2pdma), which does contain your series from 20260830-batch-p2p-fixes-v1-0-5044e8dfbe2e@nvidia.com.
I could probably fix the conflicts but I don't know why there should be conflicts, since the only commits on pci/p2pdma other than yours are a few trivial allow-list updates.
So maybe this is related to these trivial updates, my series was based on the clean p2pdma branch: https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/log/?h=f...
Ah, yeah, it must be the allow-list additions that I have but you don't. I wouldn't have thought the offsets would have been a problem.
It applies fine if I move the Haswell and Alibaba allowlist patches t to the end so the base matches fix-p2p-acs-v9, thanks.