public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Dave Hansen <dave.hansen@intel.com>
Cc: "Chang S. Bae" <chang.seok.bae@intel.com>,
	linux-kernel@vger.kernel.org, x86@kernel.org, tglx@linutronix.de,
	mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH RFC v1 02/11] x86/fpu/xstate: Introduce xstate order table and accessor macro
Date: Thu, 27 Feb 2025 21:29:30 +0100	[thread overview]
Message-ID: <Z8DLKj8qdLb7MllO@gmail.com> (raw)
In-Reply-To: <4c71fc86-2d70-4d50-b041-d6ef8c1baf4c@intel.com>


* Dave Hansen <dave.hansen@intel.com> wrote:

> On 2/27/25 12:02, Ingo Molnar wrote:
> >>> There's a 4th option:
> >>>
> >>>    4. Reuse XFEATURES 3/4 (MPX) only on APX-aware kernels, keep it 
> >>>       disabled for old kernels.
> >>>
> >>> Problem solved.
> >> The worry boils down to code in the kernel or userspace doing this:
> >>
> >> 	if (XGETBV(0) & 0x11)
> >> 		do_mpx_gunk();
> > New, APX-aware kernels wouldn't be doing this, why would they?
> 
> New, updated software is rarely the problem. It would not be a problem
> in this case either.
> 
> The problem is with old OSes/VMMs and even old userspace on new kernels.

So this is the 3rd time I have to repeat that if the MPX/AVX bit is 
disabled in the CPU by default on bootup, these old kernels will work 
fine just like they do today, so I think we might be talking past each 
other.

Let's try again:

> So I'm not _quite_ sure what you meant when you said:
> 
> > Old kernels would *never* see this bit enabled if it's disabled by
> > default on bootup ...
> 
> Because old kernel very much do see the MPX bits in CPUID and very 
> much do enable them by default via XSETBV.

My '#4' suggestion:

 - On bootup the CPU would not have the MPX/AVX bit enabled. So old 
   host kernels are fine as-is.

 - On new, AVX-aware host kernels, the AVX boot code enables the APX 
   bit (via a ususal CPUID discovery mechanism), which is the same as 
   the old MPX bit.

 - Likewise, the APX init code in APX-aware guest kernels would be able 
   to enable the APX bit as well. Old guest kernels will have the 
   APX/MPX bit disabled and will continue to work fine.

 - [ With this approach there's no out-of-order feature bit problem, 
     the APX feature bit lines up with the APX xsave area. Enabling AVX 
     would require very little code - only the CPUID discovery and MSR 
     twiddling to enable it in the FPU init path, plus similar KVM 
     code. ]

Thanks,

	Ingo

  reply	other threads:[~2025-02-27 20:29 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-27 18:44 [PATCH RFC v1 00/11] x86: Support Intel Advanced Performance Extensions Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 01/11] x86/fpu/xstate: Simplify print_xstate_features() Chang S. Bae
2025-02-27 18:51   ` Dave Hansen
2025-02-27 18:52   ` Ingo Molnar
2025-02-27 19:04   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 02/11] x86/fpu/xstate: Introduce xstate order table and accessor macro Chang S. Bae
2025-02-27 19:03   ` Dave Hansen
2025-02-27 19:34     ` Andrew Cooper
2025-02-27 19:42       ` Ingo Molnar
2025-03-20 23:46     ` Chang S. Bae
2025-02-27 19:05   ` Ingo Molnar
2025-02-27 19:32     ` Dave Hansen
2025-02-27 19:36       ` Ingo Molnar
2025-02-27 19:49         ` Andrew Cooper
2025-02-27 20:06           ` Ingo Molnar
2025-02-27 21:10             ` Andrew Cooper
2025-02-27 21:28               ` Ingo Molnar
2025-02-27 21:30                 ` Ingo Molnar
2025-02-27 22:23                   ` Andrew Cooper
2025-02-28  3:10                   ` Chang S. Bae
2025-02-28 17:11                     ` Ingo Molnar
2025-02-27 19:56         ` Dave Hansen
2025-02-27 20:02           ` Ingo Molnar
2025-02-27 20:19             ` Dave Hansen
2025-02-27 20:29               ` Ingo Molnar [this message]
2025-02-27 21:17                 ` Dave Hansen
2025-02-27 21:37                   ` Ingo Molnar
2025-02-27 23:54                     ` Dave Hansen
2025-02-28 15:20                       ` Sean Christopherson
2025-02-27 18:44 ` [PATCH RFC v1 03/11] x86/fpu/xstate: Remove xstate offset check Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 04/11] x86/fpu/xstate: Adjust XSAVE buffer size calculation Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 05/11] x86/fpu/xstate: Adjust xstate copying logic for user ABI Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 06/11] x86/fpu/mpx: Remove MPX xstate component support Chang S. Bae
2025-02-27 19:12   ` Ingo Molnar
2025-02-28  3:12     ` Chang S. Bae
2025-03-20 23:47       ` Chang S. Bae
2025-04-01 17:13         ` Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 07/11] x86/cpufeatures: Add X86_FEATURE_APX Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 08/11] x86/fpu/apx: Define APX state component Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 09/11] x86/fpu/apx: Disallow conflicting MPX presence Chang S. Bae
2025-02-27 23:16   ` Dave Hansen
2025-02-27 23:58     ` Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 10/11] x86/fpu/apx: Enable APX state support Chang S. Bae
2025-02-27 18:44 ` [PATCH RFC v1 11/11] selftests/x86/apx: Add APX test Chang S. Bae
2025-02-27 19:15 ` [PATCH RFC v1 00/11] x86: Support Intel Advanced Performance Extensions Ingo Molnar
2025-02-27 19:36   ` Dave Hansen
2025-02-28  3:10     ` Chang S. Bae
2025-03-20 23:42 ` [PATCH RFC v2 0/9] " Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 1/9] x86/fpu/xstate: Remove xstate offset check Chang S. Bae
2025-03-25 10:18     ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-14  7:34     ` [tip: x86/merge] " tip-bot2 for Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 2/9] x86/fpu/xstate: Introduce xfeature order table and accessor macro Chang S. Bae
2025-03-25 10:18     ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-14  7:34     ` [tip: x86/merge] " tip-bot2 for Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 3/9] x86/fpu/xstate: Adjust XSAVE buffer size calculation Chang S. Bae
2025-03-25 10:28     ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-14  7:34     ` [tip: x86/merge] " tip-bot2 for Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 4/9] x86/fpu/xstate: Adjust xstate copying logic for user ABI Chang S. Bae
2025-03-25 10:18     ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-03-25 10:28     ` tip-bot2 for Chang S. Bae
2025-04-14  7:34     ` [tip: x86/merge] " tip-bot2 for Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 5/9] x86/cpufeatures: Add X86_FEATURE_APX Chang S. Bae
2025-04-11 16:12     ` [PATCH RFC v2a " Chang S. Bae
2025-04-11 16:54       ` Sohil Mehta
2025-04-11 18:23         ` Chang S. Bae
2025-04-11 21:57           ` Sohil Mehta
2025-04-12  8:43             ` Ingo Molnar
2025-04-14  8:23               ` Ingo Molnar
2025-04-14 17:28                 ` Sohil Mehta
2025-04-14 17:32                   ` Dave Hansen
2025-04-14 17:45                     ` Sohil Mehta
2025-04-14 18:02                       ` Chang S. Bae
2025-04-14 18:12                         ` Sohil Mehta
2025-04-14 18:31                 ` Chang S. Bae
2025-04-16  2:16               ` [PATCH 00/10] x86/fpu: APX enablement and assorted FPU code improvements Chang S. Bae
2025-04-16  2:16                 ` [PATCH 01/10] x86/cpufeatures: Add X86_FEATURE_APX Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 02/10] x86/fpu/apx: Define APX state component Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 03/10] x86/fpu/apx: Disallow conflicting MPX presence Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 04/10] x86/fpu/apx: Enable APX state support Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 05/10] selftests/x86/apx: Add APX test Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 06/10] x86/fpu: Log XSAVE disablement consistently Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16 16:56                   ` [PATCH 06/10] " Sohil Mehta
2025-04-16 17:03                     ` Chang S. Bae
2025-04-16 18:04                       ` Sohil Mehta
2025-04-16  2:16                 ` [PATCH 07/10] x86/fpu: Refactor xfeature bitmask update code for sigframe XSAVE Chang S. Bae
2025-04-16  8:05                   ` Ingo Molnar
2025-04-16 16:55                     ` Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 08/10] x86/pkeys: Simplify PKRU update in signal frame Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:16                 ` [PATCH 09/10] x86/fpu: Remove export of mxcsr_feature_mask Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  2:17                 ` [PATCH 10/10] x86/fpu: Rename fpu_reset_fpregs() to fpu_reset_fpstate_regs() Chang S. Bae
2025-04-16  8:17                   ` [tip: x86/fpu] " tip-bot2 for Chang S. Bae
2025-04-16  8:07                 ` [PATCH 00/10] x86/fpu: APX enablement and assorted FPU code improvements Ingo Molnar
2025-04-16 16:56                   ` Chang S. Bae
2025-03-20 23:42   ` [PATCH RFC v2 6/9] x86/fpu/apx: Define APX state component Chang S. Bae
2025-04-11 22:54     ` Sohil Mehta
2025-03-20 23:42   ` [PATCH RFC v2 7/9] x86/fpu/apx: Disallow conflicting MPX presence Chang S. Bae
2025-04-14 17:09     ` Sohil Mehta
2025-04-14 17:25       ` Dave Hansen
2025-03-20 23:42   ` [PATCH RFC v2 8/9] x86/fpu/apx: Enable APX state support Chang S. Bae
2025-04-14 15:41     ` Sohil Mehta
2025-03-20 23:43   ` [PATCH RFC v2 9/9] selftests/x86/apx: Add APX test Chang S. Bae
2025-04-14 16:02     ` Sohil Mehta
2025-03-25 10:25   ` [PATCH RFC v2 0/9] x86: Support Intel Advanced Performance Extensions Ingo Molnar

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=Z8DLKj8qdLb7MllO@gmail.com \
    --to=mingo@kernel.org \
    --cc=bp@alien8.de \
    --cc=chang.seok.bae@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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