* [PATCH] arm64: entry: Clean out some indirection
@ 2025-10-14 19:08 Linus Walleij
2025-10-14 19:10 ` Linus Walleij
2025-11-04 15:22 ` Will Deacon
0 siblings, 2 replies; 3+ messages in thread
From: Linus Walleij @ 2025-10-14 19:08 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon; +Cc: linux-arm-kernel, Linus Walleij
The conversion to generic IRQ entry left some functions
in the EL1 (kernel) IRQ entry path very shallow, so drop
the __inner_functions() where appropriate, saving some
time and stack.
This is not a fix but an optimization.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm64/kernel/entry-common.c | 22 +++-------------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index f546a914f04174e37bf3578490545edebb66afd1..e34dfd93c522ae58a5f1c914fe4a5bfc6522cdae 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -38,16 +38,11 @@
* This is intended to match the logic in irqentry_enter(), handling the kernel
* mode transitions only.
*/
-static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
-{
- return irqentry_enter(regs);
-}
-
static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
{
irqentry_state_t state;
- state = __enter_from_kernel_mode(regs);
+ state = irqentry_enter(regs);
mte_check_tfsr_entry();
mte_disable_tco_entry(current);
@@ -62,17 +57,11 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
* This is intended to match the logic in irqentry_exit(), handling the kernel
* mode transitions only, and with preemption handled elsewhere.
*/
-static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs,
- irqentry_state_t state)
-{
- irqentry_exit(regs, state);
-}
-
static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
irqentry_state_t state)
{
mte_check_tfsr_exit();
- __exit_to_kernel_mode(regs, state);
+ irqentry_exit(regs, state);
}
/*
@@ -80,17 +69,12 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
* Before this function is called it is not safe to call regular kernel code,
* instrumentable code, or any code which may trigger an exception.
*/
-static __always_inline void __enter_from_user_mode(struct pt_regs *regs)
+static __always_inline void arm64_enter_from_user_mode(struct pt_regs *regs)
{
enter_from_user_mode(regs);
mte_disable_tco_entry(current);
}
-static __always_inline void arm64_enter_from_user_mode(struct pt_regs *regs)
-{
- __enter_from_user_mode(regs);
-}
-
/*
* Handle IRQ/context state management when exiting to user mode.
* After this function returns it is not safe to call regular kernel code,
---
base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
change-id: 20251014-arm64-skip-indirection-4ff88c27ad02
Best regards,
--
Linus Walleij <linus.walleij@linaro.org>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] arm64: entry: Clean out some indirection
2025-10-14 19:08 [PATCH] arm64: entry: Clean out some indirection Linus Walleij
@ 2025-10-14 19:10 ` Linus Walleij
2025-11-04 15:22 ` Will Deacon
1 sibling, 0 replies; 3+ messages in thread
From: Linus Walleij @ 2025-10-14 19:10 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon, Jinjie Ruan; +Cc: linux-arm-kernel
On Tue, Oct 14, 2025 at 9:08 PM Linus Walleij <linus.walleij@linaro.org> wrote:
> The conversion to generic IRQ entry left some functions
> in the EL1 (kernel) IRQ entry path very shallow, so drop
> the __inner_functions() where appropriate, saving some
> time and stack.
>
> This is not a fix but an optimization.
>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
For some reason b4 didn't pick up Jinjie on the To: line,
sorry Jinjie!
(Excellent work with the generic entry by the way.)
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] arm64: entry: Clean out some indirection
2025-10-14 19:08 [PATCH] arm64: entry: Clean out some indirection Linus Walleij
2025-10-14 19:10 ` Linus Walleij
@ 2025-11-04 15:22 ` Will Deacon
1 sibling, 0 replies; 3+ messages in thread
From: Will Deacon @ 2025-11-04 15:22 UTC (permalink / raw)
To: Linus Walleij; +Cc: Catalin Marinas, linux-arm-kernel
On Tue, Oct 14, 2025 at 09:08:30PM +0200, Linus Walleij wrote:
> The conversion to generic IRQ entry left some functions
> in the EL1 (kernel) IRQ entry path very shallow, so drop
> the __inner_functions() where appropriate, saving some
> time and stack.
>
> This is not a fix but an optimization.
>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> arch/arm64/kernel/entry-common.c | 22 +++-------------------
> 1 file changed, 3 insertions(+), 19 deletions(-)
I think the code was originally structured to follow the same flow as
the generic code so that the two could be easily compared. Now that
we're moving over to the generic code, I agree that it makes sense to
clean things up.
> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
> index f546a914f04174e37bf3578490545edebb66afd1..e34dfd93c522ae58a5f1c914fe4a5bfc6522cdae 100644
> --- a/arch/arm64/kernel/entry-common.c
> +++ b/arch/arm64/kernel/entry-common.c
> @@ -38,16 +38,11 @@
> * This is intended to match the logic in irqentry_enter(), handling the kernel
> * mode transitions only.
nit: this comment ^^^ (the reference to irqentry_enter()) also seems to
be out of date now.
> */
> -static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
> -{
> - return irqentry_enter(regs);
> -}
> -
> static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
> {
> irqentry_state_t state;
>
> - state = __enter_from_kernel_mode(regs);
> + state = irqentry_enter(regs);
> mte_check_tfsr_entry();
> mte_disable_tco_entry(current);
>
> @@ -62,17 +57,11 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
> * This is intended to match the logic in irqentry_exit(), handling the kernel
> * mode transitions only, and with preemption handled elsewhere.
> */
Similarly for this one ^^^.
Will
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-11-04 15:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14 19:08 [PATCH] arm64: entry: Clean out some indirection Linus Walleij
2025-10-14 19:10 ` Linus Walleij
2025-11-04 15:22 ` Will Deacon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).