On Fri, Feb 07, 2020 at 05:20:57PM +0000, Christophe Leroy wrote: > When CONFIG_PROVE_LOCKING is selected together with (now default) > CONFIG_VMAP_STACK, kernel enter deadlock during boot. > > At the point of checking whether interrupts are enabled or not, the > value of MSR saved on stack is read using the physical address of the > stack. But at this point, when using VMAP stack the DATA MMU > translation has already been re-enabled, leading to deadlock. > > Don't use the physical address of the stack when > CONFIG_VMAP_STACK is set. > > Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr> > Reported-by: Guenter Roeck <li...@roeck-us.net> > Fixes: 028474876f47 ("powerpc/32: prepare for CONFIG_VMAP_STACK")
Tested-by: Guenter Roeck <li...@roeck-us.net> > --- > arch/powerpc/kernel/entry_32.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S > index 77abbc34bbe0..0713daa651d9 100644 > --- a/arch/powerpc/kernel/entry_32.S > +++ b/arch/powerpc/kernel/entry_32.S > @@ -214,7 +214,7 @@ transfer_to_handler_cont: > * To speed up the syscall path where interrupts stay on, let's check > * first if we are changing the MSR value at all. > */ > - tophys(r12, r1) > + tophys_novmstack r12, r1 > lwz r12,_MSR(r12) > andi. r12,r12,MSR_EE > bne 1f > -- > 2.25.0 >