This ensures that all mitigation modes are explicitly handled, while
keeping the mitigation selection for each mode together. This also prepares
for adding BHB-clearing mitigation mode for VMSCAPE.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
---
arch/x86/kernel/cpu/bugs.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 1e9b11198db0fe2483bd17b1327bcfd44a2c1dbf..ecefea3c018117031ea1d1ef8f4fca6e425a936c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -3231,17 +3231,32 @@ early_param("vmscape", vmscape_parse_cmdline);
static void __init vmscape_select_mitigation(void)
{
- if (!boot_cpu_has_bug(X86_BUG_VMSCAPE) ||
- !boot_cpu_has(X86_FEATURE_IBPB)) {
+ if (!boot_cpu_has_bug(X86_BUG_VMSCAPE)) {
vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
return;
}
- if (vmscape_mitigation == VMSCAPE_MITIGATION_AUTO) {
- if (should_mitigate_vuln(X86_BUG_VMSCAPE))
+ if ((vmscape_mitigation == VMSCAPE_MITIGATION_AUTO) &&
+ !should_mitigate_vuln(X86_BUG_VMSCAPE))
+ vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
+
+ switch (vmscape_mitigation) {
+ case VMSCAPE_MITIGATION_NONE:
+ break;
+
+ case VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER:
+ if (!boot_cpu_has(X86_FEATURE_IBPB))
+ vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
+ break;
+
+ case VMSCAPE_MITIGATION_AUTO:
+ if (boot_cpu_has(X86_FEATURE_IBPB))
vmscape_mitigation = VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER;
else
vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
+ break;
+
+ default:
}
}
--
2.34.1
Hi Pawan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 6a23ae0a96a600d1d12557add110e0bb6e32730c]
url: https://github.com/intel-lab-lkp/linux/commits/Pawan-Gupta/x86-bhi-x86-vmscape-Move-LFENCE-out-of-clear_bhb_loop/20251127-061843
base: 6a23ae0a96a600d1d12557add110e0bb6e32730c
patch link: https://lore.kernel.org/r/20251126-vmscape-bhb-v5-4-02d66e423b00%40linux.intel.com
patch subject: [PATCH v5 4/9] x86/vmscape: Move mitigation selection to a switch()
config: x86_64-randconfig-122-20251129 (https://download.01.org/0day-ci/archive/20251130/202511300322.KCG4AuJ9-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251130/202511300322.KCG4AuJ9-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511300322.KCG4AuJ9-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> arch/x86/kernel/cpu/bugs.c:3260:9: sparse: sparse: statement expected after case label
vim +3260 arch/x86/kernel/cpu/bugs.c
556c1ad666ad90 Pawan Gupta 2025-08-14 3231
556c1ad666ad90 Pawan Gupta 2025-08-14 3232 static void __init vmscape_select_mitigation(void)
556c1ad666ad90 Pawan Gupta 2025-08-14 3233 {
0091dd36e9ee51 Pawan Gupta 2025-11-26 3234 if (!boot_cpu_has_bug(X86_BUG_VMSCAPE)) {
556c1ad666ad90 Pawan Gupta 2025-08-14 3235 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
556c1ad666ad90 Pawan Gupta 2025-08-14 3236 return;
556c1ad666ad90 Pawan Gupta 2025-08-14 3237 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3238
0091dd36e9ee51 Pawan Gupta 2025-11-26 3239 if ((vmscape_mitigation == VMSCAPE_MITIGATION_AUTO) &&
0091dd36e9ee51 Pawan Gupta 2025-11-26 3240 !should_mitigate_vuln(X86_BUG_VMSCAPE))
0091dd36e9ee51 Pawan Gupta 2025-11-26 3241 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3242
0091dd36e9ee51 Pawan Gupta 2025-11-26 3243 switch (vmscape_mitigation) {
0091dd36e9ee51 Pawan Gupta 2025-11-26 3244 case VMSCAPE_MITIGATION_NONE:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3245 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3246
0091dd36e9ee51 Pawan Gupta 2025-11-26 3247 case VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3248 if (!boot_cpu_has(X86_FEATURE_IBPB))
0091dd36e9ee51 Pawan Gupta 2025-11-26 3249 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3250 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3251
0091dd36e9ee51 Pawan Gupta 2025-11-26 3252 case VMSCAPE_MITIGATION_AUTO:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3253 if (boot_cpu_has(X86_FEATURE_IBPB))
556c1ad666ad90 Pawan Gupta 2025-08-14 3254 vmscape_mitigation = VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER;
5799d5d8a6c877 David Kaplan 2025-09-12 3255 else
5799d5d8a6c877 David Kaplan 2025-09-12 3256 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3257 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3258
0091dd36e9ee51 Pawan Gupta 2025-11-26 3259 default:
5799d5d8a6c877 David Kaplan 2025-09-12 @3260 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3261 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Pawan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 6a23ae0a96a600d1d12557add110e0bb6e32730c]
url: https://github.com/intel-lab-lkp/linux/commits/Pawan-Gupta/x86-bhi-x86-vmscape-Move-LFENCE-out-of-clear_bhb_loop/20251127-061843
base: 6a23ae0a96a600d1d12557add110e0bb6e32730c
patch link: https://lore.kernel.org/r/20251126-vmscape-bhb-v5-4-02d66e423b00%40linux.intel.com
patch subject: [PATCH v5 4/9] x86/vmscape: Move mitigation selection to a switch()
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20251127/202511270829.xMEXUXCW-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251127/202511270829.xMEXUXCW-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511270829.xMEXUXCW-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/x86/kernel/cpu/bugs.c:3260:2: warning: label at end of compound statement is a C23 extension [-Wc23-extensions]
3260 | }
| ^
1 warning generated.
vim +3260 arch/x86/kernel/cpu/bugs.c
556c1ad666ad90 Pawan Gupta 2025-08-14 3231
556c1ad666ad90 Pawan Gupta 2025-08-14 3232 static void __init vmscape_select_mitigation(void)
556c1ad666ad90 Pawan Gupta 2025-08-14 3233 {
0091dd36e9ee51 Pawan Gupta 2025-11-26 3234 if (!boot_cpu_has_bug(X86_BUG_VMSCAPE)) {
556c1ad666ad90 Pawan Gupta 2025-08-14 3235 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
556c1ad666ad90 Pawan Gupta 2025-08-14 3236 return;
556c1ad666ad90 Pawan Gupta 2025-08-14 3237 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3238
0091dd36e9ee51 Pawan Gupta 2025-11-26 3239 if ((vmscape_mitigation == VMSCAPE_MITIGATION_AUTO) &&
0091dd36e9ee51 Pawan Gupta 2025-11-26 3240 !should_mitigate_vuln(X86_BUG_VMSCAPE))
0091dd36e9ee51 Pawan Gupta 2025-11-26 3241 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3242
0091dd36e9ee51 Pawan Gupta 2025-11-26 3243 switch (vmscape_mitigation) {
0091dd36e9ee51 Pawan Gupta 2025-11-26 3244 case VMSCAPE_MITIGATION_NONE:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3245 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3246
0091dd36e9ee51 Pawan Gupta 2025-11-26 3247 case VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3248 if (!boot_cpu_has(X86_FEATURE_IBPB))
0091dd36e9ee51 Pawan Gupta 2025-11-26 3249 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3250 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3251
0091dd36e9ee51 Pawan Gupta 2025-11-26 3252 case VMSCAPE_MITIGATION_AUTO:
0091dd36e9ee51 Pawan Gupta 2025-11-26 3253 if (boot_cpu_has(X86_FEATURE_IBPB))
556c1ad666ad90 Pawan Gupta 2025-08-14 3254 vmscape_mitigation = VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER;
5799d5d8a6c877 David Kaplan 2025-09-12 3255 else
5799d5d8a6c877 David Kaplan 2025-09-12 3256 vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3257 break;
0091dd36e9ee51 Pawan Gupta 2025-11-26 3258
0091dd36e9ee51 Pawan Gupta 2025-11-26 3259 default:
5799d5d8a6c877 David Kaplan 2025-09-12 @3260 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3261 }
556c1ad666ad90 Pawan Gupta 2025-08-14 3262
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
© 2016 - 2025 Red Hat, Inc.