]> Git Repo - J-linux.git/commitdiff
KVM: s390: selftests: Add regression tests for PFCR subfunctions
authorHendrik Brueckner <[email protected]>
Thu, 7 Nov 2024 15:23:19 +0000 (16:23 +0100)
committerJanosch Frank <[email protected]>
Mon, 11 Nov 2024 12:15:44 +0000 (12:15 +0000)
Check if the PFCR query reported in userspace coincides with the
kernel reported function list. Right now we don't mask the functions
in the kernel so they have to be the same.

Signed-off-by: Hendrik Brueckner <[email protected]>
Reviewed-by: Hariharan Mari <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
[[email protected]: Added commit description]
Signed-off-by: Janosch Frank <[email protected]>
Message-ID: <20241107152319[email protected]>

tools/arch/s390/include/uapi/asm/kvm.h
tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c

index 05eaf6db3ad4cba4269b1ce36563096eab236b1d..60345dd2cba2d611b76f8b5c70eab8f0abab4b9b 100644 (file)
@@ -469,7 +469,8 @@ struct kvm_s390_vm_cpu_subfunc {
        __u8 kdsa[16];          /* with MSA9 */
        __u8 sortl[32];         /* with STFLE.150 */
        __u8 dfltcc[32];        /* with STFLE.151 */
-       __u8 reserved[1728];
+       __u8 pfcr[16];          /* with STFLE.201 */
+       __u8 reserved[1712];
 };
 
 #define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST        6
index 222ba1cc3cac4e1661746fe9bb187da6b25a97de..27255880dabd03c69f222fd8cf3c883689fc93a3 100644 (file)
@@ -214,6 +214,19 @@ static void test_dfltcc_asm_block(u8 (*query)[32])
                        : "cc", "0", "1");
 }
 
+/*
+ * Testing Perform Function with Concurrent Results (PFCR)
+ * CPU subfunctions's ASM block
+ */
+static void test_pfcr_asm_block(u8 (*query)[16])
+{
+       asm volatile("  lghi    0,0\n"
+                       "       .insn   rsy,0xeb0000000016,0,0,%[query]\n"
+                       : [query] "=QS" (*query)
+                       :
+                       : "cc", "0");
+}
+
 typedef void (*testfunc_t)(u8 (*array)[]);
 
 struct testdef {
@@ -249,6 +262,8 @@ struct testdef {
        { "SORTL", cpu_subfunc.sortl, sizeof(cpu_subfunc.sortl), test_sortl_asm_block, 150 },
        /* DFLTCC - Facility bit 151 */
        { "DFLTCC", cpu_subfunc.dfltcc, sizeof(cpu_subfunc.dfltcc), test_dfltcc_asm_block, 151 },
+       /* Concurrent-function facility - Facility bit 201 */
+       { "PFCR", cpu_subfunc.pfcr, sizeof(cpu_subfunc.pfcr), test_pfcr_asm_block, 201 },
 };
 
 int main(int argc, char *argv[])
This page took 0.051236 seconds and 4 git commands to generate.