]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
misc: pci_endpoint_test: Gate doorbell test on dynamic inbound mapping
authorKoichiro Den <den@valinux.co.jp>
Sun, 15 Feb 2026 15:03:33 +0000 (00:03 +0900)
committerManivannan Sadhasivam <mani@kernel.org>
Tue, 24 Feb 2026 10:30:50 +0000 (16:00 +0530)
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 <cassel@kernel.org>
Signed-off-by: Koichiro Den <den@valinux.co.jp>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Link: https://patch.msgid.link/20260215150334.3391943-3-den@valinux.co.jp
drivers/misc/pci_endpoint_test.c

index 74ab5b5b90110d9bfb229e01ffff8df67ea26704..93cd57d20881ff3037186b20f7f6a407d5e7d58d 100644 (file)
@@ -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");