From: Thomas Huth <thuth@redhat.com>
To: kvm@vger.kernel.org
Cc: David Hildenbrand <david@redhat.com>,
Janosch Frank <frankja@linux.ibm.com>,
Cornelia Huck <cohuck@redhat.com>
Subject: [kvm-unit-tests v2 PATCH] s390x/cpumodel: The missing DFP facility on TCG is expected
Date: Tue, 7 Jul 2020 12:42:05 +0200 [thread overview]
Message-ID: <20200707104205.25085-1-thuth@redhat.com> (raw)
When running the kvm-unit-tests with TCG on s390x, the cpumodel test
always reports the error about the missing DFP (decimal floating point)
facility. This is kind of expected, since DFP is not required for
running Linux and thus nobody is really interested in implementing
this facility in TCG. Thus let's mark this as an expected error instead,
so that we can run the kvm-unit-tests also with TCG without getting
test failures that we do not care about.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
v2:
- Rewrote the logic, introduced expected_tcg_fail flag
- Use manufacturer string instead of VM name to detect TCG
s390x/cpumodel.c | 49 ++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 43 insertions(+), 6 deletions(-)
diff --git a/s390x/cpumodel.c b/s390x/cpumodel.c
index 5d232c6..190ceb2 100644
--- a/s390x/cpumodel.c
+++ b/s390x/cpumodel.c
@@ -11,14 +11,19 @@
*/
#include <asm/facility.h>
+#include <alloc_page.h>
-static int dep[][2] = {
+static struct {
+ int facility;
+ int implied;
+ bool expected_tcg_fail;
+} dep[] = {
/* from SA22-7832-11 4-98 facility indications */
{ 4, 3 },
{ 5, 3 },
{ 5, 4 },
{ 19, 18 },
- { 37, 42 },
+ { 37, 42, true }, /* TCG does not have DFP and won't get it soon */
{ 43, 42 },
{ 73, 49 },
{ 134, 129 },
@@ -38,6 +43,36 @@ static int dep[][2] = {
{ 155, 77 },
};
+/*
+ * A hack to detect TCG (instead of KVM): QEMU uses "TCGguest" as guest
+ * name by default when we are running with TCG (otherwise it's "KVMguest")
+ */
+static bool is_tcg(void)
+{
+ const char qemu_ebcdic[] = { 0xd8, 0xc5, 0xd4, 0xe4 };
+ bool ret = false;
+ uint8_t *buf;
+
+ buf = alloc_page();
+ if (!buf)
+ return false;
+
+ if (stsi(buf, 1, 1, 1)) {
+ goto out;
+ }
+
+ /*
+ * If the manufacturer string is "QEMU" in EBCDIC, then we are on TCG
+ * (otherwise the string is "IBM" in EBCDIC)
+ */
+ if (!memcmp(&buf[32], qemu_ebcdic, sizeof(qemu_ebcdic)))
+ ret = true;
+out:
+ free_page(buf);
+ return ret;
+}
+
+
int main(void)
{
int i;
@@ -46,11 +81,13 @@ int main(void)
report_prefix_push("dependency");
for (i = 0; i < ARRAY_SIZE(dep); i++) {
- if (test_facility(dep[i][0])) {
- report(test_facility(dep[i][1]), "%d implies %d",
- dep[i][0], dep[i][1]);
+ if (test_facility(dep[i].facility)) {
+ report_xfail(dep[i].expected_tcg_fail && is_tcg(),
+ test_facility(dep[i].implied),
+ "%d implies %d",
+ dep[i].facility, dep[i].implied);
} else {
- report_skip("facility %d not present", dep[i][0]);
+ report_skip("facility %d not present", dep[i].facility);
}
}
report_prefix_pop();
--
2.18.1
next reply other threads:[~2020-07-07 10:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-07 10:42 Thomas Huth [this message]
2020-07-07 10:48 ` [kvm-unit-tests v2 PATCH] s390x/cpumodel: The missing DFP facility on TCG is expected Thomas Huth
2020-07-07 11:44 ` Cornelia Huck
2020-07-07 11:45 ` David Hildenbrand
2020-07-07 15:09 ` Janosch Frank
2020-07-08 11:18 ` Thomas Huth
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=20200707104205.25085-1-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=kvm@vger.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