From: Benjamin Herrenschmidt <b...@kernel.crashing.org> There's no point in going out of translation on an SMT OR with mttcg since the backend won't do anything useful such as pausing, it's only useful on traditional TCG to give time to other processors.
Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> Signed-off-by: Cédric Le Goater <c...@kaod.org> --- target/ppc/translate.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index e169c43643a1..7d40a1fbe6bd 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -1580,7 +1580,7 @@ static void gen_pause(DisasContext *ctx) tcg_temp_free_i32(t0); /* Stop translation, this gives other CPUs a chance to run */ - gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next); + gen_exception_nip(ctx, EXCP_INTERRUPT, ctx->base.pc_next); } #endif /* defined(TARGET_PPC64) */ @@ -1662,7 +1662,9 @@ static void gen_or(DisasContext *ctx) * than no-op, e.g., miso(rs=26), yield(27), mdoio(29), mdoom(30), * and all currently undefined. */ - gen_pause(ctx); + if (!mttcg_enabled) { + gen_pause(ctx); + } #endif #endif } -- 2.20.1