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!