[PATCH] target/riscv: Fix page_check_range use in fault-only-first

LIU Zhiwei posted 1 patch 9 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230729031618.821-1-zhiwei._5Fliu@linux.alibaba.com
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liweiwei@iscas.ac.cn>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
target/riscv/vector_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] target/riscv: Fix page_check_range use in fault-only-first
Posted by LIU Zhiwei 9 months, 1 week ago
Commit bef6f008b98(accel/tcg: Return bool from page_check_range) converts
integer return value to bool type. However, it wrongly converted the use
of the API in riscv fault-only-first, where page_check_range < = 0, should
be converted to !page_check_range.

Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
---
 target/riscv/vector_helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
index 4d06754826..a059ef3900 100644
--- a/target/riscv/vector_helper.c
+++ b/target/riscv/vector_helper.c
@@ -583,7 +583,7 @@ vext_ldff(void *vd, void *v0, target_ulong base,
                                          cpu_mmu_index(env, false));
                 if (host) {
 #ifdef CONFIG_USER_ONLY
-                    if (page_check_range(addr, offset, PAGE_READ)) {
+                    if (!page_check_range(addr, offset, PAGE_READ)) {
                         vl = i;
                         goto ProbeSuccess;
                     }
-- 
2.17.1
Re: [PATCH] target/riscv: Fix page_check_range use in fault-only-first
Posted by Alistair Francis 9 months ago
On Fri, Jul 28, 2023 at 11:34 PM LIU Zhiwei
<zhiwei_liu@linux.alibaba.com> wrote:
>
> Commit bef6f008b98(accel/tcg: Return bool from page_check_range) converts
> integer return value to bool type. However, it wrongly converted the use
> of the API in riscv fault-only-first, where page_check_range < = 0, should
> be converted to !page_check_range.
>
> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>

Thanks!

Applied to riscv-to-apply.next

Alistair

> ---
>  target/riscv/vector_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
> index 4d06754826..a059ef3900 100644
> --- a/target/riscv/vector_helper.c
> +++ b/target/riscv/vector_helper.c
> @@ -583,7 +583,7 @@ vext_ldff(void *vd, void *v0, target_ulong base,
>                                           cpu_mmu_index(env, false));
>                  if (host) {
>  #ifdef CONFIG_USER_ONLY
> -                    if (page_check_range(addr, offset, PAGE_READ)) {
> +                    if (!page_check_range(addr, offset, PAGE_READ)) {
>                          vl = i;
>                          goto ProbeSuccess;
>                      }
> --
> 2.17.1
>
>
Re: [PATCH] target/riscv: Fix page_check_range use in fault-only-first
Posted by Richard Henderson 9 months ago
On 7/28/23 20:16, LIU Zhiwei wrote:
> Commit bef6f008b98(accel/tcg: Return bool from page_check_range) converts
> integer return value to bool type. However, it wrongly converted the use
> of the API in riscv fault-only-first, where page_check_range < = 0, should
> be converted to !page_check_range.
> 
> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
> ---
>   target/riscv/vector_helper.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

As far as it goes,

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

though the test will never fail, because tlb_vaddr_to_host just succeeded.


r~
Re: [PATCH] target/riscv: Fix page_check_range use in fault-only-first
Posted by LIU Zhiwei 9 months ago
On 2023/7/30 5:18, Richard Henderson wrote:
> On 7/28/23 20:16, LIU Zhiwei wrote:
>> Commit bef6f008b98(accel/tcg: Return bool from page_check_range) 
>> converts
>> integer return value to bool type. However, it wrongly converted the use
>> of the API in riscv fault-only-first, where page_check_range < = 0, 
>> should
>> be converted to !page_check_range.
>>
>> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
>> ---
>>   target/riscv/vector_helper.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> As far as it goes,
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
> though the test will never fail, because tlb_vaddr_to_host just 
> succeeded.

It fails one test case in linux-user mode, where tlb_vaddr_to_host 
always succeeded.

Zhiwei

>
>
> r~