]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: endpoint: pci-epf-test: Advertise reserved BARs
authorNiklas Cassel <cassel@kernel.org>
Thu, 12 Mar 2026 13:02:36 +0000 (14:02 +0100)
committerManivannan Sadhasivam <mani@kernel.org>
Sun, 15 Mar 2026 16:34:28 +0000 (22:04 +0530)
Advertise reserved BARs as reserved in the Capabilities register,
such that the host side driver will be able to skip reserved BARs.

Signed-off-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Tested-by: Koichiro Den <den@valinux.co.jp>
Tested-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
Reviewed-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260312130229.2282001-20-cassel@kernel.org
drivers/pci/endpoint/functions/pci-epf-test.c

index 6030ae1373b1aeeee42826b5e790655550157b6b..14e61ebe1f116ce04789b6f4c3e965296701ec53 100644 (file)
 #define CAP_INTX                       BIT(3)
 #define CAP_SUBRANGE_MAPPING           BIT(4)
 #define CAP_DYNAMIC_INBOUND_MAPPING    BIT(5)
+#define CAP_BAR0_RESERVED              BIT(6)
+#define CAP_BAR1_RESERVED              BIT(7)
+#define CAP_BAR2_RESERVED              BIT(8)
+#define CAP_BAR3_RESERVED              BIT(9)
+#define CAP_BAR4_RESERVED              BIT(10)
+#define CAP_BAR5_RESERVED              BIT(11)
 
 #define PCI_EPF_TEST_BAR_SUBRANGE_NSUB 2
 
@@ -1112,6 +1118,24 @@ static void pci_epf_test_set_capabilities(struct pci_epf *epf)
            epf_test->epc_features->subrange_mapping)
                caps |= CAP_SUBRANGE_MAPPING;
 
+       if (epf_test->epc_features->bar[BAR_0].type == BAR_RESERVED)
+               caps |= CAP_BAR0_RESERVED;
+
+       if (epf_test->epc_features->bar[BAR_1].type == BAR_RESERVED)
+               caps |= CAP_BAR1_RESERVED;
+
+       if (epf_test->epc_features->bar[BAR_2].type == BAR_RESERVED)
+               caps |= CAP_BAR2_RESERVED;
+
+       if (epf_test->epc_features->bar[BAR_3].type == BAR_RESERVED)
+               caps |= CAP_BAR3_RESERVED;
+
+       if (epf_test->epc_features->bar[BAR_4].type == BAR_RESERVED)
+               caps |= CAP_BAR4_RESERVED;
+
+       if (epf_test->epc_features->bar[BAR_5].type == BAR_RESERVED)
+               caps |= CAP_BAR5_RESERVED;
+
        reg->caps = cpu_to_le32(caps);
 }