From: "Chang S. Bae" <chang.seok.bae@intel.com>
To: Andrei Vagin <avagin@google.com>,
Thomas Gleixner <tglx@kernel.org>,
"Ingo Molnar" <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>
Cc: <linux-kernel@vger.kernel.org>, <criu@lists.linux.dev>,
Dave Hansen <dave.hansen@linux.intel.com>, <x86@kernel.org>,
Alexander Mikhalitsyn <alexander@mihalicyn.com>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH 1/8] x86/fpu: Document signal frame portability
Date: Wed, 2 Sep 2026 14:15:10 -0700 [thread overview]
Message-ID: <f5334ec7-db8f-4203-8129-b05704fe0e6c@intel.com> (raw)
In-Reply-To: <20260817042048.1579415-2-avagin@google.com>
On 8/16/2026 9:20 PM, Andrei Vagin wrote:
> The x86 signal frame is designed to be self-describing, with the
> 'xstate_size' field in the software-reserved bytes indicating the actual
> size of the context. This design is required for portability, allowing a
> signal frame created on a system with a specific set of xstate features
> to be restored on a machine with a different (larger) set of features.
>
> Document this contract in the uapi headers and Documentation/. This
> requirement is critical for checkpoint/restore tools like CRIU, which
> should be able to migrate processes across machines with heterogeneous
> FPU capabilities.
>
> Note that portability is constrained by the architectural XSAVE layout
> (component offsets and sizes); the destination machine must share
> matching component layouts for all features present in the frame. While
> layouts are consistent across CPUs from the same vendor for active
> features, differences can occur across vendors or if the XSAVE space of
> a deprecated feature (e.g. MPX) is repurposed for a newer feature
> (e.g. APX).
Thanks for including this detail.
> * fpstate+extended_size-FP_XSTATE_MAGIC2_SIZE address) is set to
> * FP_XSTATE_MAGIC2 so that you can sanity check your size calculations.)
> *
> + * The xstate_size field indicates the actual size of the xstate context
> + * (including the 512-byte FXSAVE area and the 64-byte XSAVE header
> + * struct _header). This size is used in conjunction with the pointer to
> + * the xstate context to locate FP_XSTATE_MAGIC2. Note that in 32-bit signal
> + * frames (including 32-bit compat tasks on 64-bit kernels), the fpstate
> + * pointer points to a legacy 112-byte FPU environment (struct _fpstate_32)
> + * that precedes the xstate context, so the xstate context starts at
> + * fpstate + 112. This makes the signal frame self-describing and portable:
> + * a signal frame created on a machine with a certain set of xstate features
> + * can be restored on a machine with a different (larger) set of features,
> + * as long as the destination supports all features present in the frame
> + * and shares matching XSAVE component offsets and sizes for those features.
> + * Note that portability is constrained by the architectural XSAVE layout
> + * and is not guaranteed across different vendors or if space from
> + * deprecated features (e.g. MPX) is repurposed for newer features
> + * (e.g. APX).
Nit: the comment looks a bit large. It may be easier to follow if split
into a few paragraphs. E.g. there are bits discussing the portability
itself and that it is constrained by hardware.
Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
Thanks,
Chang
next prev parent reply other threads:[~2026-09-02 21:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 4:20 [PATCH v4 0/8] x86/fpu: Restore and reinforce signal frame portability Andrei Vagin
2026-08-17 4:20 ` [PATCH 1/8] x86/fpu: Document " Andrei Vagin
2026-09-02 21:15 ` Chang S. Bae [this message]
2026-09-03 4:51 ` Borislav Petkov
2026-08-17 4:20 ` [PATCH 2/8] x86/fpu: Clean up and rename variables in signal frame handling Andrei Vagin
2026-08-17 4:20 ` [PATCH 3/8] x86/fpu: Split __fpu_restore_sig to extract compat path Andrei Vagin
2026-09-02 21:15 ` Chang S. Bae
2026-08-17 4:20 ` [PATCH 4/8] x86/fpu: Document reasoning of FX-only fallback Andrei Vagin
2026-09-02 21:15 ` Chang S. Bae
2026-08-17 4:20 ` [PATCH 5/8] selftests/x86: Add a test for signal frame FPU portability Andrei Vagin
2026-08-17 4:20 ` [PATCH 6/8] x86/fpu: Fix potential underflow in xstate_calculate_size() Andrei Vagin
2026-09-02 21:15 ` Chang S. Bae
2026-08-17 4:20 ` [PATCH 7/8] x86/fpu: Pre-fault only required size of xstate buffer Andrei Vagin
2026-09-02 21:15 ` Chang S. Bae
2026-08-17 4:20 ` [PATCH 8/8] selftests/x86: Add a sigframe insufficient xstate_size test Andrei Vagin
2026-09-02 21:16 ` Chang S. Bae
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=f5334ec7-db8f-4203-8129-b05704fe0e6c@intel.com \
--to=chang.seok.bae@intel.com \
--cc=alexander@mihalicyn.com \
--cc=avagin@google.com \
--cc=bp@alien8.de \
--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 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.