Skip to content

Commit 7a1f314

Browse files
hbruecknerfrankjaa
authored andcommitted
KVM: s390: selftests: Add regression tests for PFCR subfunctions
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: <[email protected]>
1 parent 85a9e68 commit 7a1f314

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

tools/arch/s390/include/uapi/asm/kvm.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,8 @@ struct kvm_s390_vm_cpu_subfunc {
469469
__u8 kdsa[16]; /* with MSA9 */
470470
__u8 sortl[32]; /* with STFLE.150 */
471471
__u8 dfltcc[32]; /* with STFLE.151 */
472-
__u8 reserved[1728];
472+
__u8 pfcr[16]; /* with STFLE.201 */
473+
__u8 reserved[1712];
473474
};
474475

475476
#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST 6

tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,19 @@ static void test_dfltcc_asm_block(u8 (*query)[32])
214214
: "cc", "0", "1");
215215
}
216216

217+
/*
218+
* Testing Perform Function with Concurrent Results (PFCR)
219+
* CPU subfunctions's ASM block
220+
*/
221+
static void test_pfcr_asm_block(u8 (*query)[16])
222+
{
223+
asm volatile(" lghi 0,0\n"
224+
" .insn rsy,0xeb0000000016,0,0,%[query]\n"
225+
: [query] "=QS" (*query)
226+
:
227+
: "cc", "0");
228+
}
229+
217230
typedef void (*testfunc_t)(u8 (*array)[]);
218231

219232
struct testdef {
@@ -249,6 +262,8 @@ struct testdef {
249262
{ "SORTL", cpu_subfunc.sortl, sizeof(cpu_subfunc.sortl), test_sortl_asm_block, 150 },
250263
/* DFLTCC - Facility bit 151 */
251264
{ "DFLTCC", cpu_subfunc.dfltcc, sizeof(cpu_subfunc.dfltcc), test_dfltcc_asm_block, 151 },
265+
/* Concurrent-function facility - Facility bit 201 */
266+
{ "PFCR", cpu_subfunc.pfcr, sizeof(cpu_subfunc.pfcr), test_pfcr_asm_block, 201 },
252267
};
253268

254269
int main(int argc, char *argv[])

0 commit comments

Comments
 (0)