From: Sebastian Andrzej Siewior <[email protected]> commit 22230d9b50686faa3993849faffc5b7d446a4d43 in linux-rt-devel.
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 <[email protected]> Signed-off-by: Paul Gortmaker <[email protected]> diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 646ea918e3d9..149a3b9ef8a8 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -894,10 +894,10 @@ resume_kernel: 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 d559e3a0379c..7653dd58b4b2 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.7.4
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#8684): https://lists.yoctoproject.org/g/linux-yocto/message/8684 Mute This Topic: https://lists.yoctoproject.org/mt/74330111/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
