On Sun, 2016-29-05 at 12:03:52 UTC, Anton Blanchard wrote: > From: Anton Blanchard <an...@samba.org> > > In many cases we disable interrupts right before calling > find_linux_pte_or_hugepte(). > > find_linux_pte_or_hugepte() first checks interrupts are disabled > before calling __find_linux_pte_or_hugepte(): > > if (!arch_irqs_disabled()) { > pr_info("%s called with irq enabled\n", __func__); > dump_stack(); > } > return __find_linux_pte_or_hugepte(pgdir, ea, is_thp, shift); > > We know interrupts are disabled, but since the arch_irqs_*() macros > are hidden from the compiler with inline assembly, gcc does not. We > end up with a pretty awful load hit store: > > li r9,0 > lbz r24,570(r13) > stb r9,570(r13) <---- > lbz r9,570(r13) <---- ouch > cmpdi cr7,r9,0 > bne cr7,c000000000049d30 > > Find these cases, and call __find_linux_pte_or_hugepte() directly.
I'd really rather __find_linux_pte_or_hugepte() was an internal detail, rather than the standard API. We do already have quite a few uses, but adding more just further spreads the details about how the implementation works. So I'm going to drop this in favor of Aneesh's patch to make irqs disabled check a VM_WARN(). cheers _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev