From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: catalin.marinas@arm.com, will@kernel.org, oleg@redhat.com,
sstabellini@kernel.org, tglx@linutronix.de, peterz@infradead.org,
luto@kernel.org, mingo@redhat.com, juri.lelli@redhat.com,
vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
vschneid@redhat.com, kees@kernel.org, wad@chromium.org,
akpm@linux-foundation.org, samitolvanen@google.com,
masahiroy@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
rppt@kernel.org, xur@google.com, paulmck@kernel.org,
arnd@arndb.de, mbenes@suse.cz, puranjay@kernel.org,
pcc@google.com, ardb@kernel.org, sudeep.holla@arm.com,
guohanjun@huawei.com, rafael@kernel.org, liuwei09@cestc.cn,
dwmw@amazon.co.uk, Jonathan.Cameron@huawei.com,
liaochang1@huawei.com, kristina.martsenko@arm.com,
ptosi@google.com, broonie@kernel.org,
thiago.bauermann@linaro.org, kevin.brodsky@arm.com,
joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v5 11/22] arm64: entry: Switch to generic IRQ entry
Date: Mon, 10 Feb 2025 12:24:21 +0000 [thread overview]
Message-ID: <Z6nv9SLi0za8tE69@J2N7QTR9R3> (raw)
In-Reply-To: <20241206101744.4161990-12-ruanjinjie@huawei.com>
On Fri, Dec 06, 2024 at 06:17:33PM +0800, Jinjie Ruan wrote:
> Currently, x86, Riscv, Loongarch use the generic entry. Convert arm64
> to use the generic entry infrastructure from kernel/entry/*.
> The generic entry makes maintainers' work easier and codes
> more elegant.
>
> Switch arm64 to generic IRQ entry first, which removed duplicate 100+
> LOC, and it will switch to generic entry completely later. Switch to
> generic entry in two steps according to Mark's suggestion will make
> it easier to review.
>
> The changes are below:
> - Remove *enter_from/exit_to_kernel_mode(), and wrap with generic
> irqentry_enter/exit(). Also remove *enter_from/exit_to_user_mode(),
> and wrap with generic enter_from/exit_to_user_mode() because they
> are exactly the same so far.
>
> - Remove arm64_enter/exit_nmi() and use generic irqentry_nmi_enter/exit()
> because they're exactly the same, so the temporary arm64 version
> irqentry_state can also be removed.
>
> - Remove PREEMPT_DYNAMIC code, as generic entry do the same thing
> if arm64 implement arch_irqentry_exit_need_resched().
>
> Suggested-by: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
> arch/arm64/Kconfig | 1 +
> arch/arm64/include/asm/entry-common.h | 64 ++++++
> arch/arm64/include/asm/preempt.h | 6 -
> arch/arm64/kernel/entry-common.c | 307 ++++++--------------------
> arch/arm64/kernel/signal.c | 3 +-
> 5 files changed, 129 insertions(+), 252 deletions(-)
> create mode 100644 arch/arm64/include/asm/entry-common.h
Superficially this looks nice, but to be clear I have *not* looked at
this in great detail; minor comments below.
[...]
> +static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
> + unsigned long ti_work)
> +{
> + local_daif_mask();
> +}
> +
> +#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
I'm a little worried that this may be fragile having been hidden in the
common code, as it's not clear exactly when this will occur during the
return sequence, and the ordering requirements could easily be broken by
refactoring there.
I suspect we'll want to pull this later in the arm64 exit sequence so
that we can have it explicit in entry-common.c.
[...]
> index 14ac6fdb872b..84b6628647c7 100644
> --- a/arch/arm64/kernel/signal.c
> +++ b/arch/arm64/kernel/signal.c
> @@ -9,6 +9,7 @@
> #include <linux/cache.h>
> #include <linux/compat.h>
> #include <linux/errno.h>
> +#include <linux/irq-entry-common.h>
> #include <linux/kernel.h>
> #include <linux/signal.h>
> #include <linux/freezer.h>
> @@ -1603,7 +1604,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
> * the kernel can handle, and then we build all the user-level signal handling
> * stack-frames in one go after that.
> */
> -void do_signal(struct pt_regs *regs)
> +void arch_do_signal_or_restart(struct pt_regs *regs)
> {
> unsigned long continue_addr = 0, restart_addr = 0;
> int retval = 0;
Is the expected semantic the same here, or is those more than just a
name change?
Mark.
next prev parent reply other threads:[~2025-02-10 12:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20241206101744.4161990-1-ruanjinjie@huawei.com>
2025-02-08 1:15 ` [PATCH -next v5 00/22] arm64: entry: Convert to generic entry Jinjie Ruan
2025-02-10 12:30 ` Mark Rutland
2025-02-11 11:43 ` Jinjie Ruan
[not found] ` <20241206101744.4161990-2-ruanjinjie@huawei.com>
2025-02-10 11:04 ` [PATCH -next v5 01/22] arm64: ptrace: Replace interrupts_enabled() with regs_irqs_disabled() Mark Rutland
[not found] ` <20241206101744.4161990-3-ruanjinjie@huawei.com>
2025-02-10 11:08 ` [PATCH -next v5 02/22] arm64: entry: Refactor the entry and exit for exceptions from EL1 Mark Rutland
[not found] ` <20241206101744.4161990-4-ruanjinjie@huawei.com>
2025-02-10 11:26 ` [PATCH -next v5 03/22] arm64: entry: Move arm64_preempt_schedule_irq() into __exit_to_kernel_mode() Mark Rutland
[not found] ` <20241206101744.4161990-5-ruanjinjie@huawei.com>
2025-02-10 11:33 ` [PATCH -next v5 04/22] arm64: entry: Rework arm64_preempt_schedule_irq() Mark Rutland
[not found] ` <20241206101744.4161990-6-ruanjinjie@huawei.com>
2025-02-10 11:40 ` [PATCH -next v5 05/22] arm64: entry: Use preempt_count() and need_resched() helper Mark Rutland
[not found] ` <20241206101744.4161990-7-ruanjinjie@huawei.com>
2025-02-10 11:48 ` [PATCH -next v5 06/22] arm64: entry: Expand the need_irq_preemption() macro ahead Mark Rutland
[not found] ` <20241206101744.4161990-8-ruanjinjie@huawei.com>
2025-02-10 11:52 ` [PATCH -next v5 07/22] arm64: entry: preempt_schedule_irq() only if PREEMPTION enabled Mark Rutland
[not found] ` <20241206101744.4161990-9-ruanjinjie@huawei.com>
2025-02-10 11:54 ` [PATCH -next v5 08/22] arm64: entry: Use different helpers to check resched for PREEMPT_DYNAMIC Mark Rutland
[not found] ` <20241206101744.4161990-10-ruanjinjie@huawei.com>
2025-02-10 12:04 ` [PATCH -next v5 09/22] entry: Split generic entry into irq and syscall Mark Rutland
[not found] ` <20241206101744.4161990-11-ruanjinjie@huawei.com>
2025-02-10 12:05 ` [PATCH -next v5 10/22] entry: Add arch_irqentry_exit_need_resched() for arm64 Mark Rutland
[not found] ` <20241206101744.4161990-12-ruanjinjie@huawei.com>
2025-02-10 12:24 ` Mark Rutland [this message]
2025-02-11 11:32 ` [PATCH -next v5 11/22] arm64: entry: Switch to generic IRQ entry Jinjie Ruan
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=Z6nv9SLi0za8tE69@J2N7QTR9R3 \
--to=mark.rutland@arm.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=bsegall@google.com \
--cc=catalin.marinas@arm.com \
--cc=dietmar.eggemann@arm.com \
--cc=dwmw@amazon.co.uk \
--cc=guohanjun@huawei.com \
--cc=hca@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=juri.lelli@redhat.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--cc=kristina.martsenko@arm.com \
--cc=leobras@redhat.com \
--cc=liaochang1@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liuwei09@cestc.cn \
--cc=liuyuntao12@huawei.com \
--cc=luto@kernel.org \
--cc=masahiroy@kernel.org \
--cc=mbenes@suse.cz \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=paulmck@kernel.org \
--cc=pcc@google.com \
--cc=peterz@infradead.org \
--cc=ptosi@google.com \
--cc=puranjay@kernel.org \
--cc=rafael@kernel.org \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=ruanjinjie@huawei.com \
--cc=samitolvanen@google.com \
--cc=sstabellini@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=tglx@linutronix.de \
--cc=thiago.bauermann@linaro.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=wad@chromium.org \
--cc=will@kernel.org \
--cc=xen-devel@lists.xenproject.org \
--cc=xur@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox