From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
Date: Sun, 11 Jun 2023 10:14:42 +0100 [thread overview]
Message-ID: <87ttvee4tf.fsf@linaro.org> (raw)
In-Reply-To: <20230610171959.928544-1-richard.henderson@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> This is a perfectly natural occurrence for x86 "rep movb",
> where the "rep" prefix forms a counted loop of the one insn.
>
> During the tests/tcg/multiarch/memory test, this logging is
> triggered over 350000 times. Within the context of cross-i386-tci
> build, which is already slow by nature, the logging is sufficient
> to push the test into timeout.
How does this get triggered because I added these:
# non-inline runs will trigger the duplicate instruction heuristics in libinsn.so
run-plugin-%-with-libinsn.so:
$(call run-test, $@, \
$(QEMU) -monitor none -display none \
-chardev file$(COMMA)path=$@.out$(COMMA)id=output \
-plugin ../../plugin/libinsn.so$(COMMA)inline=on \
-d plugin -D $*-with-libinsn.so.pout \
$(QEMU_OPTS) $*)
to prevent the callback versions from being called for x86. The original
intent of the check was to detect failures due to cpu_io_recompile, see
e025d799af (tests/plugin: expand insn test to detect duplicate instructions)
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> Irritatingly, it doesn't timeout locally, so I used staging to double-check:
>
> Fail: https://gitlab.com/qemu-project/qemu/-/jobs/4450754282#L5062
> Pass: https://gitlab.com/qemu-project/qemu/-/jobs/4450927108
> ---
> tests/plugin/insn.c | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
>
> diff --git a/tests/plugin/insn.c b/tests/plugin/insn.c
> index cd5ea5d4ae..9bd6e44f73 100644
> --- a/tests/plugin/insn.c
> +++ b/tests/plugin/insn.c
> @@ -19,7 +19,6 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
> #define MAX_CPUS 8 /* lets not go nuts */
>
> typedef struct {
> - uint64_t last_pc;
> uint64_t insn_count;
> } InstructionCount;
>
> @@ -51,13 +50,7 @@ static void vcpu_insn_exec_before(unsigned int cpu_index, void *udata)
> {
> unsigned int i = cpu_index % MAX_CPUS;
> InstructionCount *c = &counts[i];
> - uint64_t this_pc = GPOINTER_TO_UINT(udata);
> - if (this_pc == c->last_pc) {
> - g_autofree gchar *out = g_strdup_printf("detected repeat execution @ 0x%"
> - PRIx64 "\n", this_pc);
> - qemu_plugin_outs(out);
> - }
> - c->last_pc = this_pc;
> +
> c->insn_count++;
> }
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2023-06-11 9:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-10 17:19 [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so Richard Henderson
2023-06-11 9:14 ` Alex Bennée [this message]
2023-06-12 2:50 ` Richard Henderson
2023-06-19 15:28 ` Richard Henderson
2023-06-19 17:34 ` Alex Bennée
2023-06-20 7:34 ` Richard Henderson
2023-06-20 12:05 ` Alex Bennée
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=87ttvee4tf.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.