The doorbell test requires the EPC driver to support dynamic inbound
mapping so the host can map the doorbell target address into a BAR
aperture.

Expose epc_features->dynamic_inbound_mapping via a new
CAP_DYNAMIC_INBOUND_MAPPING bit in the pci-epf-test capability register,
so the host-side pci_endpoint_test driver can detect missing support and
return -EOPNOTSUPP instead of running the test fruitlessly.

Suggested-by: Niklas Cassel <[email protected]>
Signed-off-by: Koichiro Den <[email protected]>
---
 drivers/pci/endpoint/functions/pci-epf-test.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c 
b/drivers/pci/endpoint/functions/pci-epf-test.c
index 0cb7af0919dc..c0db207ff143 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -64,6 +64,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_EPF_TEST_BAR_SUBRANGE_NSUB 2
 
@@ -1102,6 +1103,9 @@ static void pci_epf_test_set_capabilities(struct pci_epf 
*epf)
        if (epf_test->epc_features->intx_capable)
                caps |= CAP_INTX;
 
+       if (epf_test->epc_features->dynamic_inbound_mapping)
+               caps |= CAP_DYNAMIC_INBOUND_MAPPING;
+
        if (epf_test->epc_features->dynamic_inbound_mapping &&
            epf_test->epc_features->subrange_mapping)
                caps |= CAP_SUBRANGE_MAPPING;
-- 
2.51.0


Reply via email to