[RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests

Alex Bennée posted 1 patch 4 years, 1 month ago
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test checkpatch passed
Test FreeBSD passed
Test asan passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200320114522.16273-1-alex.bennee@linaro.org
Maintainers: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>, Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>, Aurelien Jarno <aurelien@aurel32.net>
configure | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Alex Bennée 4 years, 1 month ago
While debugging check-acceptance failures I found an instability in
the mips64el test case. Briefly the test case:

  retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
    -display none -vga none -serial mon:stdio \
    -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
    -cpu I6400 -smp 8 -vga std \
    -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \
    --no-reboot

Reports about a 9% failure rate:

  Results summary:
  0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
  -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
  Ran command 100 times, 91 passes

When re-run with "--accel tcg,thread=single" the instability goes
away.

  Results summary:
  0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation)
  Ran command 100 times, 100 passes

Which seems to indicate there is some aspect of the MIPS MTTCG fixes
that has been missed. Ideally we would fix that but I'm afraid I don't
have time to investigate and am not super familiar with the
architecture anyway.

I've disabled all the mips guests as I assume it's a fundamental
synchronisation primitive that is broken but I haven't tested them all
(there are a lot!).

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 configure | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index 206d22c5153..002792d21dc 100755
--- a/configure
+++ b/configure
@@ -7832,19 +7832,19 @@ case "$target_name" in
     echo "TARGET_ABI32=y" >> $config_target_mak
   ;;
   mips|mipsel)
-    mttcg="yes"
+    mttcg="no"
     TARGET_ARCH=mips
     echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
   ;;
   mipsn32|mipsn32el)
-    mttcg="yes"
+    mttcg="no"
     TARGET_ARCH=mips64
     TARGET_BASE_ARCH=mips
     echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
     echo "TARGET_ABI32=y" >> $config_target_mak
   ;;
   mips64|mips64el)
-    mttcg="yes"
+    mttcg="no"
     TARGET_ARCH=mips64
     TARGET_BASE_ARCH=mips
     echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
-- 
2.20.1


Re: [RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Philippe Mathieu-Daudé 4 years, 1 month ago
On Fri, Mar 20, 2020 at 12:45 PM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> While debugging check-acceptance failures I found an instability in
> the mips64el test case. Briefly the test case:
>
>   retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
>     -display none -vga none -serial mon:stdio \
>     -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
>     -cpu I6400 -smp 8 -vga std \
>     -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \
>     --no-reboot
>
> Reports about a 9% failure rate:
>
>   Results summary:
>   0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
>   -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
>   Ran command 100 times, 91 passes
>
> When re-run with "--accel tcg,thread=single" the instability goes
> away.

I confirm, in my notes I use this option with -smp with the following cpus:
- mips64dspr2
- I6400

>
>   Results summary:
>   0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation)
>   Ran command 100 times, 100 passes
>
> Which seems to indicate there is some aspect of the MIPS MTTCG fixes
> that has been missed. Ideally we would fix that but I'm afraid I don't
> have time to investigate and am not super familiar with the
> architecture anyway.
>
> I've disabled all the mips guests as I assume it's a fundamental
> synchronisation primitive that is broken but I haven't tested them all
> (there are a lot!).
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  configure | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/configure b/configure
> index 206d22c5153..002792d21dc 100755
> --- a/configure
> +++ b/configure
> @@ -7832,19 +7832,19 @@ case "$target_name" in
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips|mipsel)
> -    mttcg="yes"
> +    mttcg="no"

I am not sure the 32-bit targets are affected.
Maybe we can keep it enabled here?

For code below for 5.0 (64-bit targets):
Acked-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>      TARGET_ARCH=mips
>      echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
>    ;;
>    mipsn32|mipsn32el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips64|mips64el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
> --
> 2.20.1
>

Re: [RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Aleksandar Markovic 4 years, 1 month ago
пет, 20. мар 2020. у 12:45 Alex Bennée <alex.bennee@linaro.org> је написао/ла:
>
> While debugging check-acceptance failures I found an instability in
> the mips64el test case. Briefly the test case:
>

Alex, following up Philippe's hint, do you see failures while using
32-bit targets?

Thanks,
Aleksandar

>   retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
>     -display none -vga none -serial mon:stdio \
>     -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
>     -cpu I6400 -smp 8 -vga std \
>     -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \
>     --no-reboot
>
> Reports about a 9% failure rate:
>
>   Results summary:
>   0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
>   -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
>   Ran command 100 times, 91 passes
>
> When re-run with "--accel tcg,thread=single" the instability goes
> away.
>
>   Results summary:
>   0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation)
>   Ran command 100 times, 100 passes
>
> Which seems to indicate there is some aspect of the MIPS MTTCG fixes
> that has been missed. Ideally we would fix that but I'm afraid I don't
> have time to investigate and am not super familiar with the
> architecture anyway.
>
> I've disabled all the mips guests as I assume it's a fundamental
> synchronisation primitive that is broken but I haven't tested them all
> (there are a lot!).
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  configure | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/configure b/configure
> index 206d22c5153..002792d21dc 100755
> --- a/configure
> +++ b/configure
> @@ -7832,19 +7832,19 @@ case "$target_name" in
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips|mipsel)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips
>      echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
>    ;;
>    mipsn32|mipsn32el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips64|mips64el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
> --
> 2.20.1
>

Re: [RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Aleksandar Markovic 4 years, 1 month ago
пет, 20. мар 2020. у 12:45 Alex Bennée <alex.bennee@linaro.org> је написао/ла:
>
> While debugging check-acceptance failures I found an instability in
> the mips64el test case. Briefly the test case:
>
>   retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
>     -display none -vga none -serial mon:stdio \
>     -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
>     -cpu I6400 -smp 8 -vga std \
>     -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \
>     --no-reboot
>

Thank for the findings!

Could you perhaps attach or link to "retry.py"?

Did you run this particular test for the first time now, or it used to
pass before?

Thanks,
Aleksandar

> Reports about a 9% failure rate:
>
>   Results summary:
>   0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
>   -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
>   Ran command 100 times, 91 passes
>
> When re-run with "--accel tcg,thread=single" the instability goes
> away.
>
>   Results summary:
>   0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation)
>   Ran command 100 times, 100 passes
>
> Which seems to indicate there is some aspect of the MIPS MTTCG fixes
> that has been missed. Ideally we would fix that but I'm afraid I don't
> have time to investigate and am not super familiar with the
> architecture anyway.
>
> I've disabled all the mips guests as I assume it's a fundamental
> synchronisation primitive that is broken but I haven't tested them all
> (there are a lot!).
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  configure | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/configure b/configure
> index 206d22c5153..002792d21dc 100755
> --- a/configure
> +++ b/configure
> @@ -7832,19 +7832,19 @@ case "$target_name" in
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips|mipsel)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips
>      echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
>    ;;
>    mipsn32|mipsn32el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
>      echo "TARGET_ABI32=y" >> $config_target_mak
>    ;;
>    mips64|mips64el)
> -    mttcg="yes"
> +    mttcg="no"
>      TARGET_ARCH=mips64
>      TARGET_BASE_ARCH=mips
>      echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
> --
> 2.20.1
>

Re: [RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Aleksandar Markovic 4 years, 1 month ago
пет, 20. мар 2020. у 18:08 Aleksandar Markovic <
aleksandar.qemu.devel@gmail.com> је написао/ла:
>
> пет, 20. мар 2020. у 12:45 Alex Bennée <alex.bennee@linaro.org> је
написао/ла:
> >
> > While debugging check-acceptance failures I found an instability in
> > the mips64el test case. Briefly the test case:
> >
> >   retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
> >     -display none -vga none -serial mon:stdio \
> >     -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
> >     -cpu I6400 -smp 8 -vga std \
> >     -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0
panic=-1" \
> >     --no-reboot
> >
>
> Thank for the findings!
>
> Could you perhaps attach or link to "retry.py"?
>

Is this the script you used:

https://github.com/stsquad/retry/blob/master/retry.py

> Did you run this particular test for the first time now, or it used to
> pass before?
>
> Thanks,
> Aleksandar
>
> > Reports about a 9% failure rate:
> >
> >   Results summary:
> >   0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
> >   -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
> >   Ran command 100 times, 91 passes
> >
> > When re-run with "--accel tcg,thread=single" the instability goes
> > away.
> >
> >   Results summary:
> >   0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80
deviation)
> >   Ran command 100 times, 100 passes
> >
> > Which seems to indicate there is some aspect of the MIPS MTTCG fixes
> > that has been missed. Ideally we would fix that but I'm afraid I don't
> > have time to investigate and am not super familiar with the
> > architecture anyway.
> >
> > I've disabled all the mips guests as I assume it's a fundamental
> > synchronisation primitive that is broken but I haven't tested them all
> > (there are a lot!).
> >
> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> > Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> > Cc: Aurelien Jarno <aurelien@aurel32.net>
> > Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
> > Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > ---
> >  configure | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/configure b/configure
> > index 206d22c5153..002792d21dc 100755
> > --- a/configure
> > +++ b/configure
> > @@ -7832,19 +7832,19 @@ case "$target_name" in
> >      echo "TARGET_ABI32=y" >> $config_target_mak
> >    ;;
> >    mips|mipsel)
> > -    mttcg="yes"
> > +    mttcg="no"
> >      TARGET_ARCH=mips
> >      echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
> >    ;;
> >    mipsn32|mipsn32el)
> > -    mttcg="yes"
> > +    mttcg="no"
> >      TARGET_ARCH=mips64
> >      TARGET_BASE_ARCH=mips
> >      echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
> >      echo "TARGET_ABI32=y" >> $config_target_mak
> >    ;;
> >    mips64|mips64el)
> > -    mttcg="yes"
> > +    mttcg="no"
> >      TARGET_ARCH=mips64
> >      TARGET_BASE_ARCH=mips
> >      echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
> > --
> > 2.20.1
> >
Re: [RFC PATCH for 5.0] configure: disable MTTCG for MIPS guests
Posted by Alex Bennée 4 years, 1 month ago
Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> writes:

> пет, 20. мар 2020. у 12:45 Alex Bennée <alex.bennee@linaro.org> је написао/ла:
>>
>> While debugging check-acceptance failures I found an instability in
>> the mips64el test case. Briefly the test case:
>>
>>   retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \
>>     -display none -vga none -serial mon:stdio \
>>     -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \
>>     -cpu I6400 -smp 8 -vga std \
>>     -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \
>>     --no-reboot
>>
>
> Thank for the findings!
>
> Could you perhaps attach or link to "retry.py"?

Sure - it's just a noddy python script which I use for repeated testing:

  https://github.com/stsquad/retry

> Did you run this particular test for the first time now, or it used to
> pass before?

I only noticed it since it was added to check-acceptance and has been
flakey since added I think.

>
> Thanks,
> Aleksandar
>
>> Reports about a 9% failure rate:
>>
>>   Results summary:
>>   0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation)
>>   -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation)
>>   Ran command 100 times, 91 passes
>>
>> When re-run with "--accel tcg,thread=single" the instability goes
>> away.
>>
>>   Results summary:
>>   0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation)
>>   Ran command 100 times, 100 passes
>>
>> Which seems to indicate there is some aspect of the MIPS MTTCG fixes
>> that has been missed. Ideally we would fix that but I'm afraid I don't
>> have time to investigate and am not super familiar with the
>> architecture anyway.
>>
>> I've disabled all the mips guests as I assume it's a fundamental
>> synchronisation primitive that is broken but I haven't tested them all
>> (there are a lot!).
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
>> Cc: Aurelien Jarno <aurelien@aurel32.net>
>> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
>> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  configure | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 206d22c5153..002792d21dc 100755
>> --- a/configure
>> +++ b/configure
>> @@ -7832,19 +7832,19 @@ case "$target_name" in
>>      echo "TARGET_ABI32=y" >> $config_target_mak
>>    ;;
>>    mips|mipsel)
>> -    mttcg="yes"
>> +    mttcg="no"
>>      TARGET_ARCH=mips
>>      echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
>>    ;;
>>    mipsn32|mipsn32el)
>> -    mttcg="yes"
>> +    mttcg="no"
>>      TARGET_ARCH=mips64
>>      TARGET_BASE_ARCH=mips
>>      echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
>>      echo "TARGET_ABI32=y" >> $config_target_mak
>>    ;;
>>    mips64|mips64el)
>> -    mttcg="yes"
>> +    mttcg="no"
>>      TARGET_ARCH=mips64
>>      TARGET_BASE_ARCH=mips
>>      echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
>> --
>> 2.20.1
>>


-- 
Alex Bennée