* [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
@ 2023-06-10 17:19 Richard Henderson
2023-06-11 9:14 ` Alex Bennée
0 siblings, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2023-06-10 17:19 UTC (permalink / raw)
To: qemu-devel; +Cc: alex.bennee
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.
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++;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
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
2023-06-12 2:50 ` Richard Henderson
0 siblings, 1 reply; 7+ messages in thread
From: Alex Bennée @ 2023-06-11 9:14 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel
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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
2023-06-11 9:14 ` Alex Bennée
@ 2023-06-12 2:50 ` Richard Henderson
2023-06-19 15:28 ` Richard Henderson
0 siblings, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2023-06-12 2:50 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On 6/11/23 02:14, Alex Bennée wrote:
>
> 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)
I have no idea how, but it's happening.
>> 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
Note that in the pass case, we don't even log that the test ran.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
2023-06-12 2:50 ` Richard Henderson
@ 2023-06-19 15:28 ` Richard Henderson
2023-06-19 17:34 ` Alex Bennée
0 siblings, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2023-06-19 15:28 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On 6/12/23 04:50, Richard Henderson wrote:
> On 6/11/23 02:14, Alex Bennée wrote:
>>
>> 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)
>
> I have no idea how, but it's happening.
>
>
>>> 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
>
> Note that in the pass case, we don't even log that the test ran.
Any further thoughts on this? Otherwise I'll merge it to get rid of the cross-i386-tci
failure...
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
2023-06-19 15:28 ` Richard Henderson
@ 2023-06-19 17:34 ` Alex Bennée
2023-06-20 7:34 ` Richard Henderson
0 siblings, 1 reply; 7+ messages in thread
From: Alex Bennée @ 2023-06-19 17:34 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel
Richard Henderson <richard.henderson@linaro.org> writes:
> On 6/12/23 04:50, Richard Henderson wrote:
>> On 6/11/23 02:14, Alex Bennée wrote:
>>>
>>> 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)
>> I have no idea how, but it's happening.
>>
>>>> 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
>> Note that in the pass case, we don't even log that the test ran.
>
> Any further thoughts on this? Otherwise I'll merge it to get rid of
> the cross-i386-tci failure...
>
>
> r~
I'm happy to drop the feature from the plugin but the clean-up also
needs to be applied to the run-plugin-%-with-libinsn.so: rules for i386
and x86_64.
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
2023-06-19 17:34 ` Alex Bennée
@ 2023-06-20 7:34 ` Richard Henderson
2023-06-20 12:05 ` Alex Bennée
0 siblings, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2023-06-20 7:34 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On 6/19/23 19:34, Alex Bennée wrote:
>
> Richard Henderson <richard.henderson@linaro.org> writes:
>
>> On 6/12/23 04:50, Richard Henderson wrote:
>>> On 6/11/23 02:14, Alex Bennée wrote:
>>>>
>>>> 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)
>>> I have no idea how, but it's happening.
>>>
>>>>> 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
>>> Note that in the pass case, we don't even log that the test ran.
>>
>> Any further thoughts on this? Otherwise I'll merge it to get rid of
>> the cross-i386-tci failure...
>>
>>
>> r~
>
> I'm happy to drop the feature from the plugin but the clean-up also
> needs to be applied to the run-plugin-%-with-libinsn.so: rules for i386
> and x86_64.
Pardon? I don't know what you mean wrt changing the makefile.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/plugin: Remove duplicate insn log from libinsn.so
2023-06-20 7:34 ` Richard Henderson
@ 2023-06-20 12:05 ` Alex Bennée
0 siblings, 0 replies; 7+ messages in thread
From: Alex Bennée @ 2023-06-20 12:05 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel
Richard Henderson <richard.henderson@linaro.org> writes:
> On 6/19/23 19:34, Alex Bennée wrote:
>> Richard Henderson <richard.henderson@linaro.org> writes:
>>
>>> On 6/12/23 04:50, Richard Henderson wrote:
>>>> On 6/11/23 02:14, Alex Bennée wrote:
>>>>>
>>>>> 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)
>>>> I have no idea how, but it's happening.
>>>>
>>>>>> 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
>>>> Note that in the pass case, we don't even log that the test ran.
>>>
>>> Any further thoughts on this? Otherwise I'll merge it to get rid of
>>> the cross-i386-tci failure...
>>>
>>>
>>> r~
>> I'm happy to drop the feature from the plugin but the clean-up also
>> needs to be applied to the run-plugin-%-with-libinsn.so: rules for i386
>> and x86_64.
>
> Pardon? I don't know what you mean wrt changing the makefile.
There are a couple of places that do:
# non-inline runs will trigger the duplicate instruction heuristics in libinsn.so
run-plugin-%-with-libinsn.so:
$(call run-test, $@, $(QEMU) $(QEMU_OPTS) \
-plugin ../../plugin/libinsn.so$(COMMA)inline=on \
-d plugin -D $*-with-libinsn.so.pout $*)
to prevent triggering the assert for x86
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-06-20 12:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
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).