qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Richard Henderson" <richard.henderson@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Yoshinori Sato" <ysato@users.sourceforge.jp>
Subject: [PULL 21/25] target/sh4: Disable decode_gusa when plugins enabled
Date: Wed, 11 Oct 2023 11:33:25 +0100	[thread overview]
Message-ID: <20231011103329.670525-22-alex.bennee@linaro.org> (raw)
In-Reply-To: <20231011103329.670525-1-alex.bennee@linaro.org>

From: Richard Henderson <richard.henderson@linaro.org>

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230824181233.1568795-3-richard.henderson@linaro.org>
[AJB: fixed s/cpu_env/tcg_env/ during re-base]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20231009164104.369749-22-alex.bennee@linaro.org>

diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index cbd8dfc02f..220a06bdce 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -1816,6 +1816,18 @@ static void decode_opc(DisasContext * ctx)
 }
 
 #ifdef CONFIG_USER_ONLY
+/*
+ * Restart with the EXCLUSIVE bit set, within a TB run via
+ * cpu_exec_step_atomic holding the exclusive lock.
+ */
+static void gen_restart_exclusive(DisasContext *ctx)
+{
+    ctx->envflags |= TB_FLAG_GUSA_EXCLUSIVE;
+    gen_save_cpu_state(ctx, false);
+    gen_helper_exclusive(tcg_env);
+    ctx->base.is_jmp = DISAS_NORETURN;
+}
+
 /* For uniprocessors, SH4 uses optimistic restartable atomic sequences.
    Upon an interrupt, a real kernel would simply notice magic values in
    the registers and reset the PC to the start of the sequence.
@@ -2149,12 +2161,7 @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
     qemu_log_mask(LOG_UNIMP, "Unrecognized gUSA sequence %08x-%08x\n",
                   pc, pc_end);
 
-    /* Restart with the EXCLUSIVE bit set, within a TB run via
-       cpu_exec_step_atomic holding the exclusive lock.  */
-    ctx->envflags |= TB_FLAG_GUSA_EXCLUSIVE;
-    gen_save_cpu_state(ctx, false);
-    gen_helper_exclusive(tcg_env);
-    ctx->base.is_jmp = DISAS_NORETURN;
+    gen_restart_exclusive(ctx);
 
     /* We're not executing an instruction, but we must report one for the
        purposes of accounting within the TB.  We might as well report the
@@ -2242,12 +2249,22 @@ static void sh4_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
 #ifdef CONFIG_USER_ONLY
     if (unlikely(ctx->envflags & TB_FLAG_GUSA_MASK)
         && !(ctx->envflags & TB_FLAG_GUSA_EXCLUSIVE)) {
-        /* We're in an gUSA region, and we have not already fallen
-           back on using an exclusive region.  Attempt to parse the
-           region into a single supported atomic operation.  Failure
-           is handled within the parser by raising an exception to
-           retry using an exclusive region.  */
-        decode_gusa(ctx, env);
+        /*
+         * We're in an gUSA region, and we have not already fallen
+         * back on using an exclusive region.  Attempt to parse the
+         * region into a single supported atomic operation.  Failure
+         * is handled within the parser by raising an exception to
+         * retry using an exclusive region.
+         *
+         * Parsing the region in one block conflicts with plugins,
+         * so always use exclusive mode if plugins enabled.
+         */
+        if (ctx->base.plugin_enabled) {
+            gen_restart_exclusive(ctx);
+            ctx->base.pc_next += 2;
+        } else {
+            decode_gusa(ctx, env);
+        }
         return;
     }
 #endif
-- 
2.39.2



  parent reply	other threads:[~2023-10-11 10:44 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11 10:33 [PULL 00/25] testing, gdbstub and plugin updates Alex Bennée
2023-10-11 10:33 ` [PULL 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
2023-10-11 10:33 ` [PULL 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
2023-10-11 10:33 ` [PULL 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
2023-10-11 10:33 ` [PULL 04/25] gitlab: shuffle some targets and reduce avocado noise Alex Bennée
2023-10-11 10:33 ` [PULL 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
2023-10-11 10:33 ` [PULL 06/25] configure: allow user to override docker engine Alex Bennée
2023-10-11 10:33 ` [PULL 07/25] configure: remove gcc version suffixes Alex Bennée
2023-10-11 10:33 ` [PULL 08/25] gdbstub: Fix target_xml initialization Alex Bennée
2023-10-11 10:33 ` [PULL 09/25] gdbstub: Fix target.xml response Alex Bennée
2023-10-11 10:33 ` [PULL 10/25] plugins: Check if vCPU is realized Alex Bennée
2023-10-11 10:33 ` [PULL 11/25] contrib/plugins: Use GRWLock in execlog Alex Bennée
2023-10-11 10:33 ` [PULL 12/25] gdbstub: Introduce GDBFeature structure Alex Bennée
2023-10-11 10:33 ` [PULL 13/25] target/arm: Move the reference to arm-core.xml Alex Bennée
2023-10-11 10:33 ` [PULL 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
2023-10-11 10:33 ` [PULL 15/25] gdbstub: Use g_markup_printf_escaped() Alex Bennée
2023-10-11 10:33 ` [PULL 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
2023-10-11 10:33 ` [PULL 17/25] target/ppc: " Alex Bennée
2023-10-11 10:33 ` [PULL 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
2023-10-11 10:33 ` [PULL 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
2023-10-17 14:05   ` Fabiano Rosas
2023-10-17 19:40     ` Akihiko Odaki
2023-10-11 10:33 ` [PULL 20/25] accel/tcg: Add plugin_enabled to DisasContextBase Alex Bennée
2023-10-11 10:33 ` Alex Bennée [this message]
2023-10-11 10:33 ` [PULL 22/25] plugins: Set final instruction count in plugin_gen_tb_end Alex Bennée
2023-10-11 10:33 ` [PULL 23/25] contrib/plugins: fix coverity warning in cache Alex Bennée
2023-10-11 10:33 ` [PULL 24/25] contrib/plugins: fix coverity warning in lockstep Alex Bennée
2023-10-11 10:33 ` [PULL 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
2023-10-11 17:04 ` [PULL 00/25] testing, gdbstub and plugin updates Stefan Hajnoczi

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=20231011103329.670525-22-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=ysato@users.sourceforge.jp \
    /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;
as well as URLs for NNTP newsgroup(s).