From: Hariharan Mari <hari55@linux.ibm.com>
To: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
shuah@kernel.org, frankja@linux.ibm.com,
borntraeger@linux.ibm.com, imbrenda@linux.ibm.com,
david@redhat.com, pbonzini@redhat.com, schlameuss@linux.ibm.com
Subject: [PATCH v2 5/5] KVM: s390: selftests: Add regression tests for PLO subfunctions
Date: Tue, 20 Aug 2024 08:48:37 +0200 [thread overview]
Message-ID: <20240820065623.1140399-6-hari55@linux.ibm.com> (raw)
In-Reply-To: <20240820065623.1140399-1-hari55@linux.ibm.com>
Extend the existing regression test framework for s390x CPU subfunctions
to include tests for the Perform Locked Operation (PLO) subfunction
functions.
PLO was introduced in the very first 64-bit machine generation.
Hence it is assumed PLO is always installed in the Z Arch.
The test procedure follows the established pattern.
Suggested-by: Janosch Frank <frankja@linux.ibm.com>
Signed-off-by: Hariharan Mari <hari55@linux.ibm.com>
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
---
.../kvm/s390x/cpumodel_subfuncs_test.c | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c b/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c
index c31f445c6f03..255984a52365 100644
--- a/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c
+++ b/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c
@@ -20,6 +20,8 @@
#include "kvm_util.h"
+#define U8_MAX ((u8)~0U)
+
/**
* Query available CPU subfunctions
*/
@@ -37,6 +39,33 @@ static void get_cpu_machine_subfuntions(struct kvm_vm *vm,
TEST_ASSERT(!r, "Get cpu subfunctions failed r=%d errno=%d", r, errno);
}
+static inline int plo_test_bit(unsigned char nr)
+{
+ unsigned long function = (unsigned long)nr | 0x100;
+ int cc;
+
+ asm volatile(" lgr 0,%[function]\n"
+ /* Parameter registers are ignored for "test bit" */
+ " plo 0,0,0,0(0)\n"
+ " ipm %0\n"
+ " srl %0,28\n"
+ : "=d" (cc)
+ : [function] "d" (function)
+ : "cc", "0");
+ return cc == 0;
+}
+
+/*
+ * Testing Perform Locked Operation (PLO) CPU subfunction's ASM block
+ */
+static void test_plo_asm_block(u8 (*query)[32])
+{
+ for (int i = 0; i <= U8_MAX; ++i) {
+ if (plo_test_bit(i))
+ (*query)[i >> 3] |= 0x80 >> (i & 7);
+ }
+}
+
/*
* Testing Crypto Compute Message Authentication Code (KMAC) CPU subfunction's
* ASM block
@@ -237,6 +266,11 @@ struct testdef {
testfunc_t test;
int facility_bit;
} testlist[] = {
+ /* PLO was introduced in the very first 64-bit machine generation.
+ * Hence it is assumed PLO is always installed in Z Arch .
+ */
+ { "PLO", cpu_subfunc.plo, sizeof(cpu_subfunc.plo),
+ test_plo_asm_block, 1 },
/* MSA - Facility bit 17 */
{ "KMAC", cpu_subfunc.kmac, sizeof(cpu_subfunc.kmac),
test_kmac_asm_block, 17 },
--
2.45.2
next prev parent reply other threads:[~2024-08-20 6:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 6:48 [PATCH v2 0/5] KVM: s390: selftests: Add regression tests for CPU subfunctions Hariharan Mari
2024-08-20 6:48 ` [PATCH v2 1/5] KVM: s390: selftests: Add regression tests for SORTL and DFLTCC " Hariharan Mari
2024-08-21 7:19 ` Christoph Schlameuss
2024-08-21 15:44 ` Claudio Imbrenda
2024-08-20 6:48 ` [PATCH v2 2/5] KVM: s390: selftests: Add regression tests for PRNO, KDSA and KMA crypto subfunctions Hariharan Mari
2024-08-21 7:21 ` Christoph Schlameuss
2024-08-20 6:48 ` [PATCH v2 3/5] KVM: s390: selftests: Add regression tests for KMCTR, KMF, KMO and PCC " Hariharan Mari
2024-08-21 7:22 ` Christoph Schlameuss
2024-08-20 6:48 ` [PATCH v2 4/5] KVM: s390: selftests: Add regression tests for KMAC, KMC, KM, KIMD and KLMD " Hariharan Mari
2024-08-21 7:23 ` Christoph Schlameuss
2024-08-20 6:48 ` Hariharan Mari [this message]
2024-08-21 7:25 ` [PATCH v2 5/5] KVM: s390: selftests: Add regression tests for PLO subfunctions Christoph Schlameuss
2024-08-21 15:40 ` Claudio Imbrenda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240820065623.1140399-6-hari55@linux.ibm.com \
--to=hari55@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=schlameuss@linux.ibm.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox