Re: [PATCH v4 13/13] powerpc/selftests: Add test for papr-sysparm
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2023-11-29 01:09:36
Subsystem:
kernel selftest framework, the rest · Maintainers:
Shuah Khan, Linus Torvalds
Nathan Lynch via B4 Relay [off-list ref] writes:
From: Nathan Lynch <redacted> Consistently testing system parameter access is a bit difficult by nature -- the set of parameters available depends on the model and system configuration, and updating a parameter should be considered a destructive operation reserved for the admin.
...
quoted hunk ↗ jump to hunk
diff --git a/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c b/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c new file mode 100644 index 000000000000..fc25c03e8bc7 --- /dev/null +++ b/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c@@ -0,0 +1,164 @@
...
+static int set_hmc0(void)
+{
+ struct papr_sysparm_io_block sp = {
+ .parameter = 0, // HMC0, not a settable parameter
+ };
+ const int devfd = open(DEVPATH, O_RDONLY);
+
+ SKIP_IF_MSG(devfd < 0 && errno == ENOENT,
+ DEVPATH " not present");
+
+ FAIL_IF(devfd < 0);
+
+ // Ensure expected error
+ FAIL_IF(ioctl(devfd, PAPR_SYSPARM_IOC_SET, &sp) != -1);
+ FAIL_IF(errno != EPERM);
+
+ FAIL_IF(close(devfd) != 0);
+
+ return 0;
+}This one fails when run with qemu/KVM. # selftests: powerpc: papr_sysparm # test: open and close /dev/papr-sysparm without issuing commands # tags: git_version:v6.7-rc2-35-g41ada9f713ae # success: open and close /dev/papr-sysparm without issuing commands # test: retrieve SPLPAR characteristics # tags: git_version:v6.7-rc2-35-g41ada9f713ae # success: retrieve SPLPAR characteristics # test: verify EOPNOTSUPP for known-bad parameter # tags: git_version:v6.7-rc2-35-g41ada9f713ae # success: verify EOPNOTSUPP for known-bad parameter # test: PAPR_SYSPARM_IOC_GET returns EFAULT on bad address # tags: git_version:v6.7-rc2-35-g41ada9f713ae # success: PAPR_SYSPARM_IOC_GET returns EFAULT on bad address # test: PAPR_SYSPARM_IOC_SET returns EFAULT on bad address # tags: git_version:v6.7-rc2-35-g41ada9f713ae # success: PAPR_SYSPARM_IOC_SET returns EFAULT on bad address # test: ensure EPERM on attempt to update HMC0 # tags: git_version:v6.7-rc2-35-g41ada9f713ae # [FAIL] Test FAILED on line 113 # failure: ensure EPERM on attempt to update HMC0 It's returning EOPNOTSUPP. Something like below would work to fix it. cheers
diff --git a/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c b/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c
index fc25c03e8bc7..9d4850c25aed 100644
--- a/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c
+++ b/tools/testing/selftests/powerpc/papr_sysparm/papr_sysparm.c@@ -110,6 +110,7 @@ static int set_hmc0(void) // Ensure expected error FAIL_IF(ioctl(devfd, PAPR_SYSPARM_IOC_SET, &sp) != -1); + SKIP_IF_MSG(errno == EOPNOTSUPP, "operation not supported"); FAIL_IF(errno != EPERM); FAIL_IF(close(devfd) != 0);