From: Mukesh Kumar Chaurasiya <mkchauras@linux.ibm.com>
To: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
chleroy@kernel.org, ryabinin.a.a@gmail.com, glider@google.com,
andreyknvl@gmail.com, dvyukov@google.com,
vincenzo.frascino@arm.com, oleg@redhat.com, kees@kernel.org,
luto@amacapital.net, wad@chromium.org, mchauras@linux.ibm.com,
thuth@redhat.com, ruanjinjie@huawei.com, sshegde@linux.ibm.com,
akpm@linux-foundation.org, charlie@rivosinc.com, deller@gmx.de,
ldv@strace.io, macro@orcam.me.uk, segher@kernel.crashing.org,
peterz@infradead.org, bigeasy@linutronix.de,
namcao@linutronix.de, tglx@linutronix.de, mark.barnett@arm.com,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
kasan-dev@googlegroups.com
Subject: [PATCH v4 4/8] powerpc: Introduce syscall exit arch functions
Date: Fri, 23 Jan 2026 13:09:12 +0530 [thread overview]
Message-ID: <20260123073916.956498-5-mkchauras@linux.ibm.com> (raw)
In-Reply-To: <20260123073916.956498-1-mkchauras@linux.ibm.com>
From: Mukesh Kumar Chaurasiya <mchauras@linux.ibm.com>
Add PowerPC-specific implementations of the generic syscall exit hooks
used by the generic entry/exit framework:
- arch_exit_to_user_mode_work_prepare()
- arch_exit_to_user_mode_work()
These helpers handle user state restoration when returning from the
kernel to userspace, including FPU/VMX/VSX state, transactional memory,
KUAP restore, and per-CPU accounting.
Additionally, move check_return_regs_valid() from interrupt.c to
interrupt.h so it can be shared by the new entry/exit logic.
No functional change is intended with this patch.
Signed-off-by: Mukesh Kumar Chaurasiya <mchauras@linux.ibm.com>
---
arch/powerpc/include/asm/entry-common.h | 49 +++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/arch/powerpc/include/asm/entry-common.h b/arch/powerpc/include/asm/entry-common.h
index 837a7e020e82..ff0625e04778 100644
--- a/arch/powerpc/include/asm/entry-common.h
+++ b/arch/powerpc/include/asm/entry-common.h
@@ -6,6 +6,7 @@
#include <asm/cputime.h>
#include <asm/interrupt.h>
#include <asm/stacktrace.h>
+#include <asm/switch_to.h>
#include <asm/tm.h>
static __always_inline void booke_load_dbcr0(void)
@@ -123,4 +124,52 @@ static __always_inline void arch_enter_from_user_mode(struct pt_regs *regs)
#define arch_enter_from_user_mode arch_enter_from_user_mode
+static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
+ unsigned long ti_work)
+{
+ unsigned long mathflags;
+
+ if (IS_ENABLED(CONFIG_PPC_BOOK3S_64) && IS_ENABLED(CONFIG_PPC_FPU)) {
+ if (IS_ENABLED(CONFIG_PPC_TRANSACTIONAL_MEM) &&
+ unlikely((ti_work & _TIF_RESTORE_TM))) {
+ restore_tm_state(regs);
+ } else {
+ mathflags = MSR_FP;
+
+ if (cpu_has_feature(CPU_FTR_VSX))
+ mathflags |= MSR_VEC | MSR_VSX;
+ else if (cpu_has_feature(CPU_FTR_ALTIVEC))
+ mathflags |= MSR_VEC;
+
+ /*
+ * If userspace MSR has all available FP bits set,
+ * then they are live and no need to restore. If not,
+ * it means the regs were given up and restore_math
+ * may decide to restore them (to avoid taking an FP
+ * fault).
+ */
+ if ((regs->msr & mathflags) != mathflags)
+ restore_math(regs);
+ }
+ }
+
+ check_return_regs_valid(regs);
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+ local_paca->tm_scratch = regs->msr;
+#endif
+ /* Restore user access locks last */
+ kuap_user_restore(regs);
+}
+
+#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
+
+static __always_inline void arch_exit_to_user_mode(void)
+{
+ booke_load_dbcr0();
+
+ account_cpu_user_exit();
+}
+
+#define arch_exit_to_user_mode arch_exit_to_user_mode
+
#endif /* _ASM_PPC_ENTRY_COMMON_H */
--
2.52.0
next prev parent reply other threads:[~2026-01-23 7:41 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 7:39 [PATCH v4 0/8] Generic IRQ entry/exit support for powerpc Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 1/8] powerpc: rename arch_irq_disabled_regs Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 2/8] powerpc: Prepare to build with generic entry/exit framework Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 3/8] powerpc: introduce arch_enter_from_user_mode Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` Mukesh Kumar Chaurasiya [this message]
2026-01-23 7:39 ` [PATCH v4 5/8] powerpc: add exit_flags field in pt_regs Mukesh Kumar Chaurasiya
2026-07-22 7:01 ` Dmitry V. Levin
2026-07-22 7:54 ` Florian Weimer
2026-07-22 10:30 ` Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 6/8] powerpc: Prepare for IRQ entry exit Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 7/8] powerpc: Enable GENERIC_ENTRY feature Mukesh Kumar Chaurasiya
2026-01-23 7:39 ` [PATCH v4 8/8] powerpc: Remove unused functions Mukesh Kumar Chaurasiya
2026-01-23 17:54 ` [PATCH v4 0/8] Generic IRQ entry/exit support for powerpc Shrikanth Hegde
2026-01-30 7:24 ` Venkat
2026-01-30 8:41 ` David Gow
2026-01-30 18:14 ` Samir M
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=20260123073916.956498-5-mkchauras@linux.ibm.com \
--to=mkchauras@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=bigeasy@linutronix.de \
--cc=charlie@rivosinc.com \
--cc=chleroy@kernel.org \
--cc=deller@gmx.de \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=kees@kernel.org \
--cc=ldv@strace.io \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=luto@amacapital.net \
--cc=macro@orcam.me.uk \
--cc=maddy@linux.ibm.com \
--cc=mark.barnett@arm.com \
--cc=mchauras@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=namcao@linutronix.de \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=ruanjinjie@huawei.com \
--cc=ryabinin.a.a@gmail.com \
--cc=segher@kernel.crashing.org \
--cc=sshegde@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=thuth@redhat.com \
--cc=vincenzo.frascino@arm.com \
--cc=wad@chromium.org \
/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.