summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorValentin Schneider <valentin.schneider@arm.com>2019-03-15 16:31:33 +0000
committerPaul Burton <paul.burton@mips.com>2019-03-19 15:25:45 -0700
commitb8f3b15a7ba0a91de86547de8bbd5a633db03ab1 (patch)
treec5b988262d0ae06bedd2045ccd772737493a3b30 /arch
parent9e98c678c2d6ae3a17cb2de55d17f69dddaa231b (diff)
downloadlinux-stable-b8f3b15a7ba0a91de86547de8bbd5a633db03ab1.tar.gz
linux-stable-b8f3b15a7ba0a91de86547de8bbd5a633db03ab1.tar.bz2
linux-stable-b8f3b15a7ba0a91de86547de8bbd5a633db03ab1.zip
MIPS: entry: Remove unneeded need_resched() loop
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. Note that commit a18815abcdfd ("Use preempt_schedule_irq.") initially removed the existing loop, but missed the final branch to restore_all. Commit cdaed73afb61 ("Fix preemption bug.") missed that and reintroduced the loop. Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Paul Burton <paul.burton@mips.com> Cc: James Hogan <jhogan@kernel.org> Cc: linux-mips@vger.kernel.org Signed-off-by: Paul Burton <paul.burton@mips.com> Cc: linux-kernel@vger.kernel.org
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/kernel/entry.S5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index d7de8adcfcc8..5469d43b6966 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -58,15 +58,14 @@ resume_kernel:
local_irq_disable
lw t0, TI_PRE_COUNT($28)
bnez t0, restore_all
-need_resched:
LONG_L t0, TI_FLAGS($28)
andi t1, t0, _TIF_NEED_RESCHED
beqz t1, restore_all
LONG_L t0, PT_STATUS(sp) # Interrupts off?
andi t0, 1
beqz t0, restore_all
- jal preempt_schedule_irq
- b need_resched
+ PTR_LA ra, restore_all
+ j preempt_schedule_irq
#endif
FEXPORT(ret_from_kernel_thread)