qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Subject: [PULL for-6.1 01/12] accel/tcg: Don't use CF_COUNT_MASK as the max value of icount_decr.u16.low
Date: Mon, 26 Jul 2021 11:47:18 -1000	[thread overview]
Message-ID: <20210726214729.2062862-2-richard.henderson@linaro.org> (raw)
In-Reply-To: <20210726214729.2062862-1-richard.henderson@linaro.org>

From: Peter Maydell <peter.maydell@linaro.org>

In cpu_loop_exec_tb() we were bounding the number of insns we might
try to execute in a TB using CF_COUNT_MASK.  This is incorrect,
because we can validly put up to 0xffff into icount_decr.u16.low.  In
particular, since commit 78ff82bb1b67c0d7 reduced CF_COUNT_MASK to
511 this meant that we would incorrectly only try to execute 511
instructions in a 512-instruction TB, which could result in QEMU
hanging when in icount mode.

Use the actual maximum value, which is 0xffff. (This brings this code
in to line with the similar logic in icount_prepare_for_run() in
tcg-accel-ops-icount.c.)

Fixes: 78ff82bb1b67c0d7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/499
Message-Id: <20210725174405.24568-2-peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 accel/tcg/cpu-exec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index fc895cf51e..6e8dc29119 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -834,7 +834,7 @@ static inline void cpu_loop_exec_tb(CPUState *cpu, TranslationBlock *tb,
     /* Ensure global icount has gone forward */
     icount_update(cpu);
     /* Refill decrementer and continue execution.  */
-    insns_left = MIN(CF_COUNT_MASK, cpu->icount_budget);
+    insns_left = MIN(0xffff, cpu->icount_budget);
     cpu_neg(cpu)->icount_decr.u16.low = insns_left;
     cpu->icount_extra = cpu->icount_budget - insns_left;
 
-- 
2.25.1



  reply	other threads:[~2021-07-26 21:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-26 21:47 [PULL for-6.1 00/12] tcg and misc patch queue Richard Henderson
2021-07-26 21:47 ` Richard Henderson [this message]
2021-07-26 21:47 ` [PULL for-6.1 02/12] accel/tcg: Remove unnecessary check on icount_extra in cpu_loop_exec_tb() Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 03/12] bitops.h: revert db1ffc32dd ("qemu/bitops.h: add bitrev8 implementation") Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 04/12] nbd/server: Mark variable unused in nbd_negotiate_meta_queries Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 05/12] accel/tcg: Remove unused variable in cpu_exec Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 06/12] util/selfmap: Discard mapping on error Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 07/12] net/checksum: Remove unused variable in net_checksum_add_iov Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 08/12] hw/audio/adlib: Remove unused variable in adlib_callback Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 09/12] hw/ppc/spapr_events: Remove unused variable from check_exception Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 10/12] hw/pci-hist/pnv_phb4: Fix typo in pnv_phb4_ioda_write Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 11/12] linux-user/syscall: Remove unused variable from execve Richard Henderson
2021-07-26 21:47 ` [PULL for-6.1 12/12] tests/unit: Remove unused variable from test_io Richard Henderson
2021-07-27  9:55 ` [PULL for-6.1 00/12] tcg and misc patch queue Peter Maydell

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=20210726214729.2062862-2-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=f4bug@amsat.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.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;
as well as URLs for NNTP newsgroup(s).