diff options
| author | Koichiro Den <den@valinux.co.jp> | 2026-02-16 00:03:33 +0900 |
|---|---|---|
| committer | Manivannan Sadhasivam <mani@kernel.org> | 2026-02-24 16:00:50 +0530 |
| commit | 51fba4aa66192fa65a31f213218167d9af326f1e (patch) | |
| tree | 9bbe318c6a06f02bebc8f7b70eb5e97fc465f91d /drivers/misc | |
| parent | 9a940a3d08b25cf8e864785ee06b65756d6e4573 (diff) | |
| download | linux-next-51fba4aa66192fa65a31f213218167d9af326f1e.tar.gz linux-next-51fba4aa66192fa65a31f213218167d9af326f1e.zip | |
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 <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
Diffstat (limited to 'drivers/misc')
| -rw-r--r-- | drivers/misc/pci_endpoint_test.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c index 74ab5b5b9011..93cd57d20881 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"); |
