qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] target/ppc: Fix tlbie


From: Fabiano Rosas
Subject: Re: [PATCH] target/ppc: Fix tlbie
Date: Fri, 13 May 2022 14:12:06 -0300

Leandro Lupori <leandro.lupori@eldorado.org.br> writes:

> Commit 74c4912f097bab98 changed check_tlb_flush() to use
> tlb_flush_all_cpus_synced() instead of calling tlb_flush() on each
> CPU. However, as side effect of this, a CPU executing a ptesync
> after a tlbie will have its TLB flushed only after exiting its
> current Translation Block (TB).
>
> This causes memory accesses to invalid pages to succeed, if they
> happen to be on the same TB as the ptesync.
>
> To fix this, use tlb_flush_all_cpus() instead, that immediately
> flushes the TLB of the CPU executing the ptesync instruction.
>
> Fixes: 74c4912f097bab98 ("target/ppc: Fix synchronization of mttcg with 
> broadcast TLB flushes")
> Signed-off-by: Leandro Lupori <leandro.lupori@eldorado.org.br>

Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>

> ---
>  target/ppc/helper_regs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c
> index 9a691d6833..1fa032e4d0 100644
> --- a/target/ppc/helper_regs.c
> +++ b/target/ppc/helper_regs.c
> @@ -293,7 +293,7 @@ void check_tlb_flush(CPUPPCState *env, bool global)
>      if (global && (env->tlb_need_flush & TLB_NEED_GLOBAL_FLUSH)) {
>          env->tlb_need_flush &= ~TLB_NEED_GLOBAL_FLUSH;
>          env->tlb_need_flush &= ~TLB_NEED_LOCAL_FLUSH;
> -        tlb_flush_all_cpus_synced(cs);
> +        tlb_flush_all_cpus(cs);
>          return;
>      }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]