Mahesh J Salgaonkar's on March 27, 2020 3:24 pm: > On 2020-03-25 20:34:06 Wed, Nicholas Piggin wrote: >> This allows rtas_args to be put on the machine check stack, which >> avoids a lot of complications with re-entrancy deadlocks. >> >> Signed-off-by: Nicholas Piggin <npig...@gmail.com> >> --- >> arch/powerpc/kernel/setup_64.c | 15 ++++++++++++++- >> 1 file changed, 14 insertions(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c >> index 3bf03666ee09..ca1041f8a578 100644 >> --- a/arch/powerpc/kernel/setup_64.c >> +++ b/arch/powerpc/kernel/setup_64.c >> @@ -695,6 +695,9 @@ void __init exc_lvl_early_init(void) >> void __init emergency_stack_init(void) >> { >> u64 limit; >> +#ifdef CONFIG_PPC_BOOK3S_64 >> + u64 mce_limit; >> +#endif >> unsigned int i; >> >> /* >> @@ -713,6 +716,16 @@ void __init emergency_stack_init(void) >> */ >> limit = min(ppc64_bolted_size(), ppc64_rma_size); >> >> + /* >> + * Machine check on pseries calls rtas, but can't use the static >> + * rtas_args due to a machine check hitting while the lock is held. >> + * rtas args have to be under 4GB, so the machine check stack is >> + * limited to 4GB so args can be put on stack. >> + */ >> + mce_limit = limit; >> + if (firmware_has_feature(FW_FEATURE_LPAR) && mce_limit > >> 4UL*1024*1024*1024) >> + mce_limit = 4UL*1024*1024*1024; >> + > > Don't you need this as well under CONFIG_PPC_BOOK3S_64 #ifdef ??
Good catch. Thanks, Nick