Message ID | 20250123120147.3603409-4-cassel@kernel.org (mailing list archive) |
---|---|
State | New |
Delegated to: | Krzysztof WilczyĆski |
Headers | show |
Series | [1/2] misc: pci_endpoint_test: Give disabled BARs a distinct error code | expand |
On Thu, Jan 23, 2025 at 01:01:49PM +0100, Niklas Cassel wrote: > Currently BARs that have been disabled by the endpoint controller driver > will result in a test FAIL. > > Returning FAIL for a BAR that is disabled seems overly pessimistic. > > There are EPC that disables one or more BARs intentionally. > > One reason for this is that there are certain EPCs that are hardwired to > expose internal PCIe controller registers over a certain BAR, so the EPC > driver disables such a BAR, such that the host will not overwrite random > registers during testing. > > Such a BAR will be disabled by the EPC driver's init function, and the > BAR will be marked as BAR_RESERVED, such that it will be unavailable to > endpoint function drivers. > > Let's return FAIL only for BARs that are actually enabled and failed the > test, and let's return skip for BARs that are not even enabled. > > Signed-off-by: Niklas Cassel <cassel@kernel.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> I was thinking about doing something similar since some of the BAR tests are failing on my Qcom setup. And you beat me to it :) - Mani > --- > tools/testing/selftests/pci_endpoint/pci_endpoint_test.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c > index c267b822c108..576c590b277b 100644 > --- a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c > +++ b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c > @@ -65,6 +65,8 @@ TEST_F(pci_ep_bar, BAR_TEST) > int ret; > > pci_ep_ioctl(PCITEST_BAR, variant->barno); > + if (ret == -ENODATA) > + SKIP(return, "BAR is disabled"); > EXPECT_FALSE(ret) TH_LOG("Test failed for BAR%d", variant->barno); > } > > -- > 2.48.1 >
diff --git a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c index c267b822c108..576c590b277b 100644 --- a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c +++ b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c @@ -65,6 +65,8 @@ TEST_F(pci_ep_bar, BAR_TEST) int ret; pci_ep_ioctl(PCITEST_BAR, variant->barno); + if (ret == -ENODATA) + SKIP(return, "BAR is disabled"); EXPECT_FALSE(ret) TH_LOG("Test failed for BAR%d", variant->barno); }
Currently BARs that have been disabled by the endpoint controller driver will result in a test FAIL. Returning FAIL for a BAR that is disabled seems overly pessimistic. There are EPC that disables one or more BARs intentionally. One reason for this is that there are certain EPCs that are hardwired to expose internal PCIe controller registers over a certain BAR, so the EPC driver disables such a BAR, such that the host will not overwrite random registers during testing. Such a BAR will be disabled by the EPC driver's init function, and the BAR will be marked as BAR_RESERVED, such that it will be unavailable to endpoint function drivers. Let's return FAIL only for BARs that are actually enabled and failed the test, and let's return skip for BARs that are not even enabled. Signed-off-by: Niklas Cassel <cassel@kernel.org> --- tools/testing/selftests/pci_endpoint/pci_endpoint_test.c | 2 ++ 1 file changed, 2 insertions(+)