[PATCH v2 1/2] s390x: intercept: fence one test when using TCG

Claudio Imbrenda
2022-07-21T13:30:16Z

Qemu commit f8333de2793 ("target/s390x/tcg: SPX: check validity of new prefix")
fixes a TCG bug discovered with a new testcase in the intercept test.

The gitlab pipeline for the KVM unit tests uses TCG and it will keep
failing every time as long as the pipeline uses a version of Qemu
without the aforementioned patch.

Fence the specific testcase for now. Once the pipeline is fixed, this
patch can safely be reverted.

This patch is meant to go on top this already queued patch from Janis:
"s390x/intercept: Test invalid prefix argument to SET PREFIX"
https://lore.kernel.org/all/20220627152412.2243255-1-scgl@linux.ibm.com/

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
---
s390x/intercept.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/s390x/intercept.c b/s390x/intercept.c
index 54bed5a4..656b8adb 100644
--- a/s390x/intercept.c
+++ b/s390x/intercept.c
@@ -14,6 +14,7 @@
#include <asm/page.h>
#include <asm/facility.h>
#include <asm/time.h>
+#include <hardware.h>

static uint8_t pagebuf[PAGE_SIZE * 2] __attribute__((aligned(PAGE_SIZE * 2)));

@@ -76,7 +77,8 @@ static void test_spx(void)
check_pgm_int_code(PGM_INT_CODE_ADDRESSING);

new_prefix = get_ram_size() & 0x7fffe000;
- if (get_ram_size() - new_prefix < 2 * PAGE_SIZE) {
+ /* TODO: Remove host_is_tcg() checks once CIs are using QEMU >= 7.1 */
+ if (!host_is_tcg() && (get_ram_size() - new_prefix < 2 * PAGE_SIZE)) {
expect_pgm_int();
asm volatile("spx %0 " : : "Q"(new_prefix));
check_pgm_int_code(PGM_INT_CODE_ADDRESSING);
@@ -88,7 +90,10 @@ static void test_spx(void)
* the address to 8k we have a completely accessible area.
*/
} else {
- report_skip("inaccessible prefix area");
+ if (host_is_tcg())
+ report_skip("inaccessible prefix area (workaround for TCG bug)");
+ else
+ report_skip("inaccessible prefix area");
}
}

--
2.36.1