From: Koichiro Den Date: Sun, 15 Feb 2026 15:03:33 +0000 (+0900) Subject: misc: pci_endpoint_test: Gate doorbell test on dynamic inbound mapping X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51fba4aa66192fa65a31f213218167d9af326f1e;p=thirdparty%2Fkernel%2Flinux.git misc: pci_endpoint_test: Gate doorbell test on dynamic inbound mapping The doorbell test relies on the endpoint being able to update inbound translations at runtime so the host can reach the doorbell target through a BAR mapping. If the endpoint does not advertise CAP_DYNAMIC_INBOUND_MAPPING, return -EOPNOTSUPP from PCITEST_DOORBELL. This avoids confusing failures in user space and kselftests when the required capability is not available. Suggested-by: Niklas Cassel Signed-off-by: Koichiro Den Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel Link: https://patch.msgid.link/20260215150334.3391943-3-den@valinux.co.jp --- diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c index 74ab5b5b90110..93cd57d20881f 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -84,6 +84,7 @@ #define CAP_MSIX BIT(2) #define CAP_INTX BIT(3) #define CAP_SUBRANGE_MAPPING BIT(4) +#define CAP_DYNAMIC_INBOUND_MAPPING BIT(5) #define PCI_ENDPOINT_TEST_DB_BAR 0x34 #define PCI_ENDPOINT_TEST_DB_OFFSET 0x38 @@ -1060,6 +1061,9 @@ static int pci_endpoint_test_doorbell(struct pci_endpoint_test *test) u32 addr; int left; + if (!(test->ep_caps & CAP_DYNAMIC_INBOUND_MAPPING)) + return -EOPNOTSUPP; + if (irq_type < PCITEST_IRQ_TYPE_INTX || irq_type > PCITEST_IRQ_TYPE_MSIX) { dev_err(dev, "Invalid IRQ type\n");