Re: [PATCH 11/13] PCI/P2PDMA: Add KUnit tests for ACS routing decisions
Logan Gunthorpe <[email protected]> Tue, 4 Aug 2026 16:37:57 -0600
| Newsgroups | gmane.linux.kernel.pci,gmane.linux.kernel,gmane.linux.documentation |
|---|---|
| Message-ID | <[email protected]> |
On 2026-08-02 09:09, Leon Romanovsky wrote: > From: Leon Romanovsky <[email protected]> > > Add a KUnit suite exercising the ACS peer-to-peer routing logic: > > - pci_acs_p2pdma_decision(): the full PCIe table 6-11 truth table, > including the Egress Control Vector branches (bit set/clear, with and > without Request Redirect and Completion Redirect) that require a > switch implementing the Egress Control Vector and so cannot be > reached on commonly available hardware. > > - pci_acs_egress_port_valid(): the vector-size boundary, including the > "size 0 encodes 256 bits" case. > > - pci_acs_egress_ctrl_set(): driven through a fake pci_ops returning > canned config space, covering target Port Number extraction from > LNKCAP, the vector DWORD offset (target_port / 32), the bit position > (target_port % 32), the -ERANGE bound, and the unsupported-port > guards -- all without real hardware. > > Run with: > > cat > /tmp/pci-acs.kunitconfig <<'EOF' > CONFIG_KUNIT=y > CONFIG_PCI=y > CONFIG_ZONE_DEVICE=y > CONFIG_MEMORY_HOTPLUG=y > CONFIG_MEMORY_HOTREMOVE=y > CONFIG_SPARSEMEM_VMEMMAP=y > CONFIG_PCI_P2PDMA=y > CONFIG_PCI_ACS_KUNIT_TEST=y > EOF > > ./tools/testing/kunit/kunit.py run --arch=x86_64 \ > --kunitconfig=/tmp/pci-acs.kunitconfig --jobs=$(nproc) pci_acs > > Signed-off-by: Leon Romanovsky <[email protected]> > Assisted-by: Claude Opus 4.8 <[email protected]> Great, I like having Kunit tests for this kind of things. Thanks! Reviewd-by: Logan Gunthorpe <[email protected]>