summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Cassel <cassel@kernel.org>2026-03-12 16:02:36 +0300
committerManivannan Sadhasivam <mani@kernel.org>2026-03-15 19:34:28 +0300
commit50a1fd6e5ee3fd93e1a5a49fb9c76ca44ac13b8b (patch)
tree228b9ea8ff9866ed483f7a4f3f4fe6632dafc142
parent0f08179c8c29bc5ab23906d2ab5409d98a4ca110 (diff)
downloadlinux-50a1fd6e5ee3fd93e1a5a49fb9c76ca44ac13b8b.tar.xz
PCI: endpoint: pci-epf-test: Advertise reserved BARs
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
-rw-r--r--drivers/pci/endpoint/functions/pci-epf-test.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index 6030ae1373b1..14e61ebe1f11 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -65,6 +65,12 @@
#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);
}