From: "Mukesh Kumar Chaurasiya (IBM)" <mkchauras@gmail.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,
sshegde@linux.ibm.com, thuth@redhat.com, ruanjinjie@huawei.com,
akpm@linux-foundation.org, macro@orcam.me.uk, ldv@strace.io,
charlie@rivosinc.com, deller@gmx.de, kevin.brodsky@arm.com,
ritesh.list@gmail.com, yeoreum.yun@arm.com,
agordeev@linux.ibm.com, segher@kernel.crashing.org,
mark.rutland@arm.com, ryan.roberts@arm.com, pmladek@suse.com,
feng.tang@linux.alibaba.com, peterz@infradead.org,
kan.liang@linux.intel.com, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com
Cc: Samir M <samir@linux.ibm.com>, David Gow <davidgow@google.com>,
Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Subject: [PATCH v5 4/8] powerpc: Introduce syscall exit arch functions
Date: Mon, 27 Apr 2026 17:57:38 +0530 [thread overview]
Message-ID: <20260427122742.210074-5-mkchauras@gmail.com> (raw)
In-Reply-To: <20260427122742.210074-1-mkchauras@gmail.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>
Tested-by: Samir M <samir@linux.ibm.com>
Tested-by: David Gow <davidgow@google.com>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Reviewed-by: Shrikanth Hegde <sshegde@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.53.0
next prev parent reply other threads:[~2026-04-27 12:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 12:27 [PATCH v5 0/8] Generic IRQ entry/exit support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 1/8] powerpc: rename arch_irq_disabled_regs Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 2/8] powerpc: Prepare to build with generic entry/exit framework Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 3/8] powerpc: introduce arch_enter_from_user_mode Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` Mukesh Kumar Chaurasiya (IBM) [this message]
2026-04-27 12:27 ` [PATCH v5 5/8] powerpc: add exit_flags field in pt_regs Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 6/8] powerpc: Prepare for IRQ entry exit Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 7/8] powerpc: Enable GENERIC_ENTRY feature Mukesh Kumar Chaurasiya (IBM)
2026-04-27 12:27 ` [PATCH v5 8/8] powerpc: Remove unused functions Mukesh Kumar Chaurasiya (IBM)
2026-06-19 21:59 ` [PATCH v5 0/8] Generic IRQ entry/exit support for powerpc Madhavan Srinivasan
2026-06-23 11:11 ` Michal Suchánek
2026-06-24 7:38 ` Mukesh Kumar Chaurasiya
2026-07-04 15:49 ` Andreas Schwab
2026-07-05 6:49 ` Christophe Leroy (CS GROUP)
2026-07-05 11:35 ` Andreas Schwab
2026-07-07 4:29 ` Shrikanth Hegde
2026-07-05 12:02 ` Andreas Schwab
2026-07-06 6:02 ` Shrikanth Hegde
2026-07-06 15:26 ` Andreas Schwab
2026-07-06 19:21 ` Andreas Schwab
2026-07-05 18:00 ` Andreas Schwab
2026-07-07 6:05 ` Mukesh Kumar Chaurasiya
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=20260427122742.210074-5-mkchauras@gmail.com \
--to=mkchauras@gmail.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=charlie@rivosinc.com \
--cc=chleroy@kernel.org \
--cc=davidgow@google.com \
--cc=deller@gmx.de \
--cc=dvyukov@google.com \
--cc=feng.tang@linux.alibaba.com \
--cc=glider@google.com \
--cc=kan.liang@linux.intel.com \
--cc=kasan-dev@googlegroups.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--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.rutland@arm.com \
--cc=mchauras@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=ritesh.list@gmail.com \
--cc=ruanjinjie@huawei.com \
--cc=ryabinin.a.a@gmail.com \
--cc=ryan.roberts@arm.com \
--cc=samir@linux.ibm.com \
--cc=segher@kernel.crashing.org \
--cc=sshegde@linux.ibm.com \
--cc=thuth@redhat.com \
--cc=venkat88@linux.ibm.com \
--cc=vincenzo.frascino@arm.com \
--cc=wad@chromium.org \
--cc=yeoreum.yun@arm.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 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.