[PATCH] accel/tcg: Fix cpu_ldq_be_mmu typo

Richard Henderson posted 1 patch 2 years, 1 month ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220315002506.152030-1-richard.henderson@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>
accel/tcg/cputlb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] accel/tcg: Fix cpu_ldq_be_mmu typo
Posted by Richard Henderson 2 years, 1 month ago
In the conversion to cpu_ld_*_mmu, the retaddr parameter
was corrupted in the one case of cpu_ldq_be_mmu.

Cc: Thomas Huth <thuth@redhat.com>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/902
Fixes: f83bcecb1 ("accel/tcg: Add cpu_{ld,st}*_mmu interfaces")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---

This really should have affected all big-endian guests regardless
of the host.  I have no idea how the referenced test case fails
on s390x and ppc64le hosts, but passes on x86_64 host.


r~

---
 accel/tcg/cputlb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index 3b918fe..2035b2a 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -2174,7 +2174,7 @@ uint32_t cpu_ldl_be_mmu(CPUArchState *env, abi_ptr addr,
 uint64_t cpu_ldq_be_mmu(CPUArchState *env, abi_ptr addr,
                         MemOpIdx oi, uintptr_t ra)
 {
-    return cpu_load_helper(env, addr, oi, MO_BEUQ, helper_be_ldq_mmu);
+    return cpu_load_helper(env, addr, oi, ra, helper_be_ldq_mmu);
 }
 
 uint16_t cpu_ldw_le_mmu(CPUArchState *env, abi_ptr addr,
-- 
1.8.3.1
Re: [PATCH] accel/tcg: Fix cpu_ldq_be_mmu typo
Posted by Thomas Huth 1 year, 12 months ago
On 15/03/2022 01.25, Richard Henderson wrote:
> In the conversion to cpu_ld_*_mmu, the retaddr parameter
> was corrupted in the one case of cpu_ldq_be_mmu.
> 
> Cc: Thomas Huth <thuth@redhat.com>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/902
> Fixes: f83bcecb1 ("accel/tcg: Add cpu_{ld,st}*_mmu interfaces")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> 
> This really should have affected all big-endian guests regardless
> of the host.  I have no idea how the referenced test case fails
> on s390x and ppc64le hosts, but passes on x86_64 host.
> 
> 
> r~
> 
> ---
>   accel/tcg/cputlb.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
> index 3b918fe..2035b2a 100644
> --- a/accel/tcg/cputlb.c
> +++ b/accel/tcg/cputlb.c
> @@ -2174,7 +2174,7 @@ uint32_t cpu_ldl_be_mmu(CPUArchState *env, abi_ptr addr,
>   uint64_t cpu_ldq_be_mmu(CPUArchState *env, abi_ptr addr,
>                           MemOpIdx oi, uintptr_t ra)
>   {
> -    return cpu_load_helper(env, addr, oi, MO_BEUQ, helper_be_ldq_mmu);
> +    return cpu_load_helper(env, addr, oi, ra, helper_be_ldq_mmu);
>   }
>   
>   uint16_t cpu_ldw_le_mmu(CPUArchState *env, abi_ptr addr,

CC: to qemu-stable.

The problem apparently also broke some versions of Python, see:

  https://bugzilla.redhat.com/show_bug.cgi?id=2080519#c14

So in case we're doing a 6.2.1 release, it would be nice to integrate this 
patch there, too.

  Thomas
Re: [PATCH] accel/tcg: Fix cpu_ldq_be_mmu typo
Posted by Philippe Mathieu-Daudé 2 years, 1 month ago
On 15/3/22 01:25, Richard Henderson wrote:
> In the conversion to cpu_ld_*_mmu, the retaddr parameter
> was corrupted in the one case of cpu_ldq_be_mmu.
> 
> Cc: Thomas Huth <thuth@redhat.com>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/902
> Fixes: f83bcecb1 ("accel/tcg: Add cpu_{ld,st}*_mmu interfaces")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> 
> This really should have affected all big-endian guests regardless
> of the host.  I have no idea how the referenced test case fails
> on s390x and ppc64le hosts, but passes on x86_64 host.
> 
> 
> r~
> 
> ---
>   accel/tcg/cputlb.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
> index 3b918fe..2035b2a 100644
> --- a/accel/tcg/cputlb.c
> +++ b/accel/tcg/cputlb.c
> @@ -2174,7 +2174,7 @@ uint32_t cpu_ldl_be_mmu(CPUArchState *env, abi_ptr addr,
>   uint64_t cpu_ldq_be_mmu(CPUArchState *env, abi_ptr addr,
>                           MemOpIdx oi, uintptr_t ra)
>   {
> -    return cpu_load_helper(env, addr, oi, MO_BEUQ, helper_be_ldq_mmu);
> +    return cpu_load_helper(env, addr, oi, ra, helper_be_ldq_mmu);
>   }
>   
>   uint16_t cpu_ldw_le_mmu(CPUArchState *env, abi_ptr addr,

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Re: [PATCH] accel/tcg: Fix cpu_ldq_be_mmu typo
Posted by Thomas Huth 2 years, 1 month ago
On 15/03/2022 01.25, Richard Henderson wrote:
> In the conversion to cpu_ld_*_mmu, the retaddr parameter
> was corrupted in the one case of cpu_ldq_be_mmu.
> 
> Cc: Thomas Huth <thuth@redhat.com>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/902
> Fixes: f83bcecb1 ("accel/tcg: Add cpu_{ld,st}*_mmu interfaces")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> 
> This really should have affected all big-endian guests regardless
> of the host.  I have no idea how the referenced test case fails
> on s390x and ppc64le hosts, but passes on x86_64 host.

For me, the tests/avocado/boot_linux.py:BootLinuxS390X test fails on my x86 
laptop as host.

Anyway, your patch fixes the issue for me:

Tested-by: Thomas Huth <thuth@redhat.com>

Thank you very much for the quick fix!

  Thomas


> 
> r~
> 
> ---
>   accel/tcg/cputlb.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
> index 3b918fe..2035b2a 100644
> --- a/accel/tcg/cputlb.c
> +++ b/accel/tcg/cputlb.c
> @@ -2174,7 +2174,7 @@ uint32_t cpu_ldl_be_mmu(CPUArchState *env, abi_ptr addr,
>   uint64_t cpu_ldq_be_mmu(CPUArchState *env, abi_ptr addr,
>                           MemOpIdx oi, uintptr_t ra)
>   {
> -    return cpu_load_helper(env, addr, oi, MO_BEUQ, helper_be_ldq_mmu);
> +    return cpu_load_helper(env, addr, oi, ra, helper_be_ldq_mmu);
>   }
>   
>   uint16_t cpu_ldw_le_mmu(CPUArchState *env, abi_ptr addr,