From: Ard Biesheuvel <ardb@kernel.org>
To: linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk
Cc: Ard Biesheuvel <ardb@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Kees Cook <keescook@chromium.org>,
Keith Packard <keithpac@amazon.com>,
Linus Walleij <linus.walleij@linaro.org>
Subject: [PATCH v2 3/9] ARM: optimize indirect call to handle_arch_irq for v7 cores
Date: Tue, 5 Oct 2021 09:15:36 +0200 [thread overview]
Message-ID: <20211005071542.3127341-4-ardb@kernel.org> (raw)
In-Reply-To: <20211005071542.3127341-1-ardb@kernel.org>
The current irq_handler macro uses a literal load followed by an
explicit assignment of lr before an indirect call, both of which are
sub-optimal on recent ARM cores. Replace it by a mov_l call, which will
evaluate to a movw/movt pair on v7 cores, avoiding one of the two loads,
followed by a call to a newly introduced 'bl_m' macro, which will
evaluate to a blx instruction on cores that support it. (Setting lr
explicitly rather than via a bl or blx instruction confuses the return
address prediction that modern out-of-order cores use to speculatively
perform the function return.)
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
arch/arm/kernel/entry-armv.S | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index a54b5044d406..21896f702447 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -38,14 +38,12 @@
*/
.macro irq_handler
#ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
- ldr r1, =handle_arch_irq
+ mov_l r1, handle_arch_irq
mov r0, sp
- badr lr, 9997f
- ldr pc, [r1]
+ bl_m [r1]
#else
arch_irq_handler_default
#endif
-9997:
.endm
.macro pabt_helper
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-10-05 7:18 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-05 7:15 [PATCH v2 0/9] ARM: add support for IRQ stacks Ard Biesheuvel
2021-10-05 7:15 ` [PATCH v2 1/9] ARM: remove some dead code Ard Biesheuvel
2021-10-05 12:06 ` Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 2/9] ARM: assembler: introduce bl_r and bl_m macros Ard Biesheuvel
2021-10-05 12:10 ` Arnd Bergmann
2021-10-05 12:14 ` Ard Biesheuvel
2021-10-05 7:15 ` Ard Biesheuvel [this message]
2021-10-05 12:11 ` [PATCH v2 3/9] ARM: optimize indirect call to handle_arch_irq for v7 cores Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 4/9] ARM: unwind: support unwinding across multiple stacks Ard Biesheuvel
2021-10-05 12:17 ` Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 5/9] ARM: export dump_mem() to other objects Ard Biesheuvel
2021-10-05 12:15 ` Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 6/9] ARM: unwind: dump exception stack from calling frame Ard Biesheuvel
2021-10-05 12:20 ` Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 7/9] ARM: implement IRQ stacks Ard Biesheuvel
2021-10-05 12:26 ` Arnd Bergmann
2021-10-05 7:15 ` [PATCH v2 8/9] ARM: call_with_stack: add unwind support Ard Biesheuvel
2021-10-05 12:22 ` Arnd Bergmann
2021-10-05 18:46 ` Nick Desaulniers
2021-10-05 18:46 ` Nick Desaulniers
2021-10-05 18:57 ` Ard Biesheuvel
2021-10-05 18:57 ` Ard Biesheuvel
2021-10-05 7:15 ` [PATCH v2 9/9] ARM: run softirqs on the per-CPU IRQ stack Ard Biesheuvel
2021-10-05 12:23 ` Arnd Bergmann
2021-10-06 15:21 ` Ard Biesheuvel
2021-10-11 23:29 ` [PATCH v2 0/9] ARM: add support for IRQ stacks Keith Packard
2021-10-16 22:04 ` Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211005071542.3127341-4-ardb@kernel.org \
--to=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=keescook@chromium.org \
--cc=keithpac@amazon.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@armlinux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.