[Devel] [PATCH vz10 v2] selftests: pci_endpoint: skip when the test device is absent

Eva Kurchatova eva.kurchatova at virtuozzo.com
Thu Sep 10 06:21:19 MSK 2026


Every fixture opens /dev/pci-endpoint-test.0 and asserts on the result,
so on a machine that has no PCI endpoint test device all 17 cases fail
in fixture setup rather than saying the hardware is not there.

Fix by checking the device once before handing over to the harness.
Doing it that way returns one SKIP line from the kselftest.

https://virtuozzo.atlassian.net/browse/VSTOR-142446
Feature: fix selftests

Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
---
 .../selftests/pci_endpoint/pci_endpoint_test.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
index da0db0e7c969..a6106b6c52e3 100644
--- a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
+++ b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
@@ -257,4 +257,20 @@ TEST_F(pcie_ep_doorbell, DOORBELL_TEST)
 	pci_ep_ioctl(PCITEST_DOORBELL, 0);
 	EXPECT_FALSE(ret) TH_LOG("Test failed for Doorbell\n");
 }
-TEST_HARNESS_MAIN
+
+static bool test_device_available(void)
+{
+	return access(test_device, F_OK) == 0;
+}
+
+int main(int argc, char **argv)
+{
+	/*
+	 * Only the plain invocation, which is the one kselftest uses, turns
+	 * into a skip, so that -l and -h keep working without the hardware.
+	 */
+	if (argc == 1 && !test_device_available())
+		ksft_exit_skip("no PCI endpoint test device %s\n", test_device);
+
+	return test_harness_run(argc, argv);
+}
-- 
2.55.0



More information about the Devel mailing list