From: Andrei Vagin <avagin@google.com>
To: Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
"Chang S. Bae" <chang.seok.bae@intel.com>
Cc: linux-kernel@vger.kernel.org, criu@lists.linux.dev,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, Andrei Vagin <avagin@google.com>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH v3 0/10] x86/fpu: Restore and reinforce signal frame portability
Date: Mon, 15 Jun 2026 19:37:06 +0000 [thread overview]
Message-ID: <20260615193716.1843340-1-avagin@google.com> (raw)
The x86 signal frame is designed to be self-describing. The xstate_size
field in the software-reserved bytes indicates the actual size of the
xstate context and is used by the kernel to locate the FP_XSTATE_MAGIC2
marker during signal return.
This design is required to provide portability of signal frames across
different machines. For example, a process checkpointed on a system with
fewer xstate features and restored on a system with more features will
have a signal frame on its stack that is smaller than the destination
host's default. By relying on the frame's internal xstate_size, the
kernel can correctly validate and restore such frames.
This series restores and improves signal frame portability. The goal is
to allow process migration across CPUs with heterogeneous FPU
capabilities, as long as the process only uses features supported by
both systems. This version addresses the original issues by pre-faulting
only the required size of the xstate buffer (rather than the default
task size), and includes cleanups requested by Ingo Molnar.
v3:
- Include cleanups and refactoring of signal frame handling code
as requested by Ingo Molnar.
- Fix potential underflow in xstate_calculate_size()
v2:
- Address sashiko comments.
- 44eeff9bc467 ("Revert "x86/fpu: Refine and simplify the magic
number check during signal return"") has been merged.
Cc: Thomas Gleixner <tglx@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: "Chang S. Bae" <chang.seok.bae@intel.com>
Andrei Vagin (10):
x86/fpu: Document signal frame portability
x86/fpu: Clean up and rename variables in signal frame handling
x86/fpu: Split __fpu_restore_sig to extract compat path
x86/fpu: Document reasoning of FX-only fallback
x86/fpu: Fix potential underflow in xstate_calculate_size()
selftests/x86: Add a test for signal frame FPU portability
x86/fpu: Pre-fault only required size of xstate buffer
selftests/x86: Add a sigframe insufficient xstate_size test
x86/fpu: Allow restoring signal frames with larger xstate_size
selftests/x86: Check restoring FPU state with larger xstate_size
Documentation/arch/x86/xstate.rst | 13 +
arch/x86/include/uapi/asm/sigcontext.h | 13 +
arch/x86/kernel/fpu/signal.c | 141 +++++--
arch/x86/kernel/fpu/xstate.c | 9 +-
arch/x86/kernel/fpu/xstate.h | 2 +
tools/testing/selftests/x86/Makefile | 5 +-
.../selftests/x86/sigframe_fpu_portability.c | 345 ++++++++++++++++++
tools/testing/selftests/x86/xstate.c | 5 -
tools/testing/selftests/x86/xstate.h | 12 +
9 files changed, 497 insertions(+), 48 deletions(-)
create mode 100644 tools/testing/selftests/x86/sigframe_fpu_portability.c
--
2.54.0.1189.g8c84645362-goog
next reply other threads:[~2026-06-15 19:37 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 19:37 Andrei Vagin [this message]
2026-06-15 19:37 ` [PATCH 01/10] x86/fpu: Document " Andrei Vagin
2026-06-26 13:51 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-06-15 19:37 ` [PATCH 02/10] x86/fpu: Clean up and rename variables in signal frame handling Andrei Vagin
2026-06-26 17:05 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 03/10] x86/fpu: Split __fpu_restore_sig to extract compat path Andrei Vagin
2026-06-26 17:20 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 04/10] x86/fpu: Document reasoning of FX-only fallback Andrei Vagin
2026-06-26 14:22 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-07-31 15:34 ` Andrei Vagin
2026-06-15 19:37 ` [PATCH 05/10] x86/fpu: Fix potential underflow in xstate_calculate_size() Andrei Vagin
2026-06-26 14:32 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-06-15 19:37 ` [PATCH 06/10] selftests/x86: Add a test for signal frame FPU portability Andrei Vagin
2026-06-26 14:39 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 07/10] x86/fpu: Pre-fault only required size of xstate buffer Andrei Vagin
2026-06-26 17:28 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 08/10] selftests/x86: Add a sigframe insufficient xstate_size test Andrei Vagin
2026-06-26 15:02 ` Alexander Mikhalitsyn
2026-06-15 19:37 ` [PATCH 09/10] x86/fpu: Allow restoring signal frames with larger xstate_size Andrei Vagin
2026-06-26 17:32 ` Alexander Mikhalitsyn
2026-06-30 19:23 ` Chang S. Bae
2026-07-01 0:48 ` Andrei Vagin
2026-07-06 17:08 ` Chang S. Bae
2026-07-07 20:27 ` Andrei Vagin
2026-07-09 21:14 ` Chang S. Bae
2026-07-10 22:24 ` Chang S. Bae
2026-07-22 0:35 ` Andrei Vagin
2026-07-30 21:26 ` Andrei Vagin
2026-08-01 0:49 ` Chang S. Bae
2026-08-04 20:30 ` Andrei Vagin
2026-08-07 15:56 ` Chang S. Bae
2026-08-07 23:12 ` Andrei Vagin
2026-08-08 3:05 ` Chang S. Bae
2026-08-08 18:50 ` Andrei Vagin
2026-08-11 6:06 ` Chang S. Bae
2026-08-14 21:00 ` Andrei Vagin
2026-08-17 14:23 ` Chang S. Bae
2026-08-17 16:36 ` Andrei Vagin
2026-06-15 19:37 ` [PATCH 10/10] selftests/x86: Check restoring FPU state " Andrei Vagin
2026-06-26 15:12 ` Alexander Mikhalitsyn
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=20260615193716.1843340-1-avagin@google.com \
--to=avagin@google.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=criu@lists.linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@kernel.org \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®