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
This commit is contained in:
Niklas Cassel 2026-03-12 14:02:36 +01:00 committed by Manivannan Sadhasivam
parent 0f08179c8c
commit 50a1fd6e5e

View File

@ -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);
}