From: Valentin Schneider <valentin.schneider@xxxxxxx> Date: Mon, 11 Mar 2019 22:47:50 +0000 > Since the enabling and disabling of IRQs within preempt_schedule_irq() > is contained in a need_resched() loop, we don't need the outer arch > code loop. > > We seem to be looping back somewhere much higher than the usual > preempt/need_resched checks, but AFAICT we would just branch to > 'rtrap_no_irq_enable' and then back to 'to_kernel', which is > a need_resched() loop with a few extra steps. > > Signed-off-by: Valentin Schneider <valentin.schneider@xxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: sparclinux@xxxxxxxxxxxxxxx > --- > arch/sparc/kernel/rtrap_64.S | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S > index 29aa34f11720..57fb75686957 100644 > --- a/arch/sparc/kernel/rtrap_64.S > +++ b/arch/sparc/kernel/rtrap_64.S > @@ -322,7 +322,6 @@ to_kernel: > nop > call preempt_schedule_irq > nop > - ba,pt %xcc, rtrap > #endif > kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5 > brz,pt %l5, rt_continue > -- > 2.20.1 > We must re-evaluate the %tstate value stored in ptregs, you cannot make this change.