TCG is known to fail these tests, so add an explicit exception to skip them. Once TCG has been fixed, it will be enough to revert this patch. Signed-off-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> --- s390x/mvpg.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/s390x/mvpg.c b/s390x/mvpg.c index 792052ad..148095e0 100644 --- a/s390x/mvpg.c +++ b/s390x/mvpg.c @@ -20,6 +20,7 @@ #include <smp.h> #include <alloc_page.h> #include <bitops.h> +#include <vm.h> /* Used to build the appropriate test values for register 0 */ #define KFC(x) ((x) << 10) @@ -224,20 +225,26 @@ static void test_mmu_prot(void) report(clear_pgm_int() == PGM_INT_CODE_PROTECTION, "destination read only"); fresh += PAGE_SIZE; - protect_page(fresh, PAGE_ENTRY_I); - cc = mvpg(CCO, fresh, source); - report(cc == 1, "destination invalid"); - fresh += PAGE_SIZE; + if (vm_is_tcg()) { + report_skip("destination invalid"); + report_skip("source invalid"); + report_skip("source and destination invalid"); + } else { + protect_page(fresh, PAGE_ENTRY_I); + cc = mvpg(CCO, fresh, source); + report(cc == 1, "destination invalid"); + fresh += PAGE_SIZE; - protect_page(source, PAGE_ENTRY_I); - cc = mvpg(CCO, fresh, source); - report(cc == 2, "source invalid"); - fresh += PAGE_SIZE; + protect_page(source, PAGE_ENTRY_I); + cc = mvpg(CCO, fresh, source); + report(cc == 2, "source invalid"); + fresh += PAGE_SIZE; - protect_page(fresh, PAGE_ENTRY_I); - cc = mvpg(CCO, fresh, source); - report(cc == 2, "source and destination invalid"); - fresh += PAGE_SIZE; + protect_page(fresh, PAGE_ENTRY_I); + cc = mvpg(CCO, fresh, source); + report(cc == 2, "source and destination invalid"); + fresh += PAGE_SIZE; + } unprotect_page(source, PAGE_ENTRY_I); report_prefix_pop(); -- 2.26.2