mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
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 <brueckner@linux.ibm.com> Reviewed-by: Hariharan Mari <hari55@linux.ibm.com> Link: https://lore.kernel.org/r/20241107152319.77816-5-brueckner@linux.ibm.com [frankja@linux.ibm.com: Added commit description] Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Message-ID: <20241107152319.77816-5-brueckner@linux.ibm.com>
This commit is contained in:
parent
85a9e680d4
commit
7a1f314337
|
@ -469,7 +469,8 @@ struct kvm_s390_vm_cpu_subfunc {
|
||||||
__u8 kdsa[16]; /* with MSA9 */
|
__u8 kdsa[16]; /* with MSA9 */
|
||||||
__u8 sortl[32]; /* with STFLE.150 */
|
__u8 sortl[32]; /* with STFLE.150 */
|
||||||
__u8 dfltcc[32]; /* with STFLE.151 */
|
__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
|
#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST 6
|
||||||
|
|
|
@ -214,6 +214,19 @@ static void test_dfltcc_asm_block(u8 (*query)[32])
|
||||||
: "cc", "0", "1");
|
: "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)[]);
|
typedef void (*testfunc_t)(u8 (*array)[]);
|
||||||
|
|
||||||
struct testdef {
|
struct testdef {
|
||||||
|
@ -249,6 +262,8 @@ struct testdef {
|
||||||
{ "SORTL", cpu_subfunc.sortl, sizeof(cpu_subfunc.sortl), test_sortl_asm_block, 150 },
|
{ "SORTL", cpu_subfunc.sortl, sizeof(cpu_subfunc.sortl), test_sortl_asm_block, 150 },
|
||||||
/* DFLTCC - Facility bit 151 */
|
/* DFLTCC - Facility bit 151 */
|
||||||
{ "DFLTCC", cpu_subfunc.dfltcc, sizeof(cpu_subfunc.dfltcc), test_dfltcc_asm_block, 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[])
|
int main(int argc, char *argv[])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user