Re: [RFC PATCH 2/3] ARM: entry: Remove unneeded need_resched() loop

From: Julien Thierry
Date: Fri Feb 01 2019 - 03:49:48 EST


Hi Valentin,

On 31/01/2019 18:23, Valentin Schneider wrote:
> 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.
>
> Signed-off-by: Valentin Schneider <valentin.schneider@xxxxxxx>
> Cc: Russell King <linux@xxxxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Will Deacon <will.deacon@xxxxxxx>
> Cc: Julien Thierry <julien.thierry@xxxxxxx>
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx

Reviewed-by: Julien Thierry <julien.thierry@xxxxxxx>

Cheers,

> ---
> arch/arm/kernel/entry-armv.S | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
> index e85a3af9ddeb..a7ac22e09bb2 100644
> --- a/arch/arm/kernel/entry-armv.S
> +++ b/arch/arm/kernel/entry-armv.S
> @@ -220,7 +220,7 @@ __irq_svc:
> teq r8, #0 @ if preempt count != 0
> movne r0, #0 @ force flags to 0
> tst r0, #_TIF_NEED_RESCHED
> - blne svc_preempt
> + blne preempt_schedule_irq @ irq en/disable is done inside
> #endif
>
> svc_exit r5, irq = 1 @ return from exception
> @@ -229,16 +229,6 @@ ENDPROC(__irq_svc)
>
> .ltorg
>
> -#ifdef CONFIG_PREEMPT
> -svc_preempt:
> - mov r8, lr
> -1: bl preempt_schedule_irq @ irq en/disable is done inside
> - ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS
> - tst r0, #_TIF_NEED_RESCHED
> - reteq r8 @ go again
> - b 1b
> -#endif
> -
> __und_fault:
> @ Correct the PC such that it is pointing at the instruction
> @ which caused the fault. If the faulting instruction was ARM
>

--
Julien Thierry