Christophe Leroy's on March 21, 2020 1:33 am: > > > Le 20/03/2020 à 16:24, Nicholas Piggin a écrit : >> Signed-off-by: Nicholas Piggin <npig...@gmail.com> >> --- >> arch/powerpc/platforms/pseries/lpar.c | 10 +++++++++- >> 1 file changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/platforms/pseries/lpar.c >> b/arch/powerpc/platforms/pseries/lpar.c >> index 3c3da25b445c..e4ed5317f117 100644 >> --- a/arch/powerpc/platforms/pseries/lpar.c >> +++ b/arch/powerpc/platforms/pseries/lpar.c >> @@ -636,8 +636,16 @@ static const struct proc_ops >> vcpudispatch_stats_freq_proc_ops = { >> >> static int __init vcpudispatch_stats_procfs_init(void) >> { >> - if (!lppaca_shared_proc(get_lppaca())) >> + /* >> + * Avoid smp_processor_id while preemptible. All CPUs should have >> + * the same value for lppaca_shared_proc. >> + */ >> + preempt_disable(); >> + if (!lppaca_shared_proc(get_lppaca())) { >> + preempt_enable(); >> return 0; >> + } >> + preempt_enable(); > > Can we avoid the double preempt_enable() with something like: > > preempt_disable(); > is_shared = lppaca_shared_proc(get_lppaca()); > preempt_enable(); > if (!is_shared) > return 0;
I don't mind too much. Same number of lines. Thanks, Nick