Since the softirq rework 32bit POWER does not compile because get_current() is not provided - just the `current' macro. Use the `current' instead. Since the v5.2-RT series, the lazy-preempt code is broken. It loads the lazy-counter and flags from the R9 but R2 should be used. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- arch/powerpc/kernel/entry_32.S | 4 ++-- include/linux/preempt.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index d37b373104502..004944258387b 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -893,10 +893,10 @@ user_exc_return: /* r10 contains MSR_KERNEL here */ bne restore_kuap andi. r8,r8,_TIF_NEED_RESCHED bne+ 1f - lwz r0,TI_PREEMPT_LAZY(r9) + lwz r0,TI_PREEMPT_LAZY(r2) cmpwi 0,r0,0 /* if non-zero, just restore regs and return */ bne restore_kuap - lwz r0,TI_FLAGS(r9) + lwz r0,TI_FLAGS(r2) andi. r0,r0,_TIF_NEED_RESCHED_LAZY beq+ restore_kuap 1: diff --git a/include/linux/preempt.h b/include/linux/preempt.h index d559e3a0379c2..7653dd58b4b21 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -100,9 +100,9 @@ (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET))) #ifdef CONFIG_PREEMPT_RT_FULL -#define softirq_count() ((long)get_current()->softirq_count) +#define softirq_count() (current->softirq_count) #define in_softirq() (softirq_count()) -#define in_serving_softirq() (get_current()->softirq_count & SOFTIRQ_OFFSET) +#define in_serving_softirq() (current->softirq_count & SOFTIRQ_OFFSET) #else -- 2.24.0