The hpte_need_flush() function accesses the ppc64_tlb_batch per-CPU variable with preemption enabled, a bug that this patch fixes. Perhaps crudely.
Signed-off-by: Paul E. McKenney <paul...@linux.vnet.ibm.com> --- arch/powerpc/include/asm/pgtable-ppc64.h | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h index 2b09cd5..6ed08ab 100644 --- a/arch/powerpc/include/asm/pgtable-ppc64.h +++ b/arch/powerpc/include/asm/pgtable-ppc64.h @@ -228,8 +228,11 @@ static inline unsigned long pte_update(struct mm_struct *mm, assert_pte_locked(mm, addr); #ifdef CONFIG_PPC_STD_MMU_64 - if (old & _PAGE_HASHPTE) + if (old & _PAGE_HASHPTE) { + preempt_disable(); hpte_need_flush(mm, addr, ptep, old, huge); + preempt_enable(); + } #endif return old; -- 1.7.3.2 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev