public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Chao Gao <chao.gao@intel.com>
To: x86@kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, tglx@linutronix.de, dave.hansen@intel.com,
	seanjc@google.com, pbonzini@redhat.com
Cc: peterz@infradead.org, rick.p.edgecombe@intel.com,
	weijiang.yang@intel.com, john.allen@amd.com, bp@alien8.de,
	chang.seok.bae@intel.com, xin3.li@intel.com,
	Chao Gao <chao.gao@intel.com>, Ingo Molnar <mingo@redhat.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Oleg Nesterov <oleg@redhat.com>,
	Stanislav Spassov <stanspas@amazon.de>,
	Eric Biggers <ebiggers@google.com>, Kees Cook <kees@kernel.org>
Subject: [PATCH v6 4/7] x86/fpu: Initialize guest FPU permissions from guest defaults
Date: Tue,  6 May 2025 17:36:09 +0800	[thread overview]
Message-ID: <20250506093740.2864458-5-chao.gao@intel.com> (raw)
In-Reply-To: <20250506093740.2864458-1-chao.gao@intel.com>

Currently, fpu->guest_perm is copied from fpu->perm, which is derived from
fpu_kernel_cfg.default_features.

Guest defaults were introduced to differentiate the features and sizes of
host and guest FPUs. Copying guest FPU permissions from the host will lead
to inconsistencies between the guest default features and permissions.

Initialize guest FPU permissions from guest defaults instead of host
defaults. This ensures that any changes to guest default features are
automatically reflected in guest permissions, which in turn guarantees
that fpstate_realloc() allocates a correctly sized XSAVE buffer for guest
FPUs.

Suggested-by: Chang S. Bae <chang.seok.bae@intel.com>
Signed-off-by: Chao Gao <chao.gao@intel.com>
Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
---
v6: Drop vcpu_fpu_config.user_* and collect reviews (Rick)
---
 arch/x86/kernel/fpu/core.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index 2cd5e1910ff8..444e517a8648 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -553,8 +553,14 @@ void fpstate_reset(struct fpu *fpu)
 	fpu->perm.__state_perm		= fpu_kernel_cfg.default_features;
 	fpu->perm.__state_size		= fpu_kernel_cfg.default_size;
 	fpu->perm.__user_state_size	= fpu_user_cfg.default_size;
-	/* Same defaults for guests */
-	fpu->guest_perm = fpu->perm;
+
+	fpu->guest_perm.__state_perm	= guest_default_cfg.features;
+	fpu->guest_perm.__state_size	= guest_default_cfg.size;
+	/*
+	 * User features and sizes remain the same between guest FPUs
+	 * and host FPUs.
+	 */
+	fpu->guest_perm.__user_state_size = fpu_user_cfg.default_size;
 }
 
 static inline void fpu_inherit_perms(struct fpu *dst_fpu)
-- 
2.47.1


  parent reply	other threads:[~2025-05-06  9:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-06  9:36 [PATCH v6 0/7] Introduce CET supervisor state support Chao Gao
2025-05-06  9:36 ` [PATCH v6 1/7] x86/fpu/xstate: Always preserve non-user xfeatures/flags in __state_perm Chao Gao
2025-05-06  9:51   ` [tip: x86/fpu] " tip-bot2 for Sean Christopherson
2025-05-06  9:36 ` [PATCH v6 2/7] x86/fpu: Drop @perm from guest pseudo FPU container Chao Gao
2025-05-06  9:36 ` [PATCH v6 3/7] x86/fpu/xstate: Differentiate default features for host and guest FPUs Chao Gao
2025-05-08 20:02   ` Edgecombe, Rick P
2025-05-06  9:36 ` Chao Gao [this message]
2025-05-06  9:36 ` [PATCH v6 5/7] x86/fpu: Initialize guest fpstate and FPU pseudo container from guest defaults Chao Gao
2025-05-06 17:24   ` Sean Christopherson
2025-05-07  7:37     ` Chao Gao
2025-05-07 18:01       ` Sean Christopherson
2025-05-07 18:04         ` Dave Hansen
2025-05-09  8:14   ` [PATCH v6a 5/8] " Chao Gao
2025-05-09  8:16   ` [PATCH v6a 6/8] x86/fpu: Remove xfd argument from __fpstate_reset() Chao Gao
2025-05-09 18:29     ` Sean Christopherson
2025-05-06  9:36 ` [PATCH v6 6/7] x86/fpu/xstate: Introduce "guest-only" supervisor xfeature set Chao Gao
2025-05-06  9:36 ` [PATCH v6 7/7] x86/fpu/xstate: Add CET supervisor xfeature support as a guest-only feature Chao Gao

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=20250506093740.2864458-5-chao.gao@intel.com \
    --to=chao.gao@intel.com \
    --cc=bp@alien8.de \
    --cc=chang.seok.bae@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=ebiggers@google.com \
    --cc=hpa@zytor.com \
    --cc=john.allen@amd.com \
    --cc=kees@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=oleg@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rick.p.edgecombe@intel.com \
    --cc=seanjc@google.com \
    --cc=stanspas@amazon.de \
    --cc=tglx@linutronix.de \
    --cc=weijiang.yang@intel.com \
    --cc=x86@kernel.org \
    --cc=xin3.li@intel.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