On Thu, Sep 04, 2025 at 01:57:34PM +0100, Kevin Brodsky wrote:
...
>  static inline lazy_mmu_state_t arch_enter_lazy_mmu_mode(void)
>  {
>       struct ppc64_tlb_batch *batch;
> +     int lazy_mmu_nested;
>  
>       if (radix_enabled())
>               return LAZY_MMU_DEFAULT;
> @@ -39,9 +40,14 @@ static inline lazy_mmu_state_t 
> arch_enter_lazy_mmu_mode(void)
>        */
>       preempt_disable();
>       batch = this_cpu_ptr(&ppc64_tlb_batch);
> -     batch->active = 1;
> +     lazy_mmu_nested = batch->active;
>  
> -     return LAZY_MMU_DEFAULT;
> +     if (!lazy_mmu_nested) {

Why not just?

        if (!batch->active) {

> +             batch->active = 1;
> +             return LAZY_MMU_DEFAULT;
> +     } else {
> +             return LAZY_MMU_NESTED;
> +     }
>  }
>  
>  static inline void arch_leave_lazy_mmu_mode(lazy_mmu_state_t state)
> @@ -54,7 +60,10 @@ static inline void 
> arch_leave_lazy_mmu_mode(lazy_mmu_state_t state)
>  
>       if (batch->index)
>               __flush_tlb_pending(batch);
> -     batch->active = 0;
> +
> +     if (state != LAZY_MMU_NESTED)
> +             batch->active = 0;
> +
>       preempt_enable();
>  }

Thanks!

Reply via email to