This patch is added as it is fixing a regression introduced by d8630b67ca1ed ("x86/cpu: Add platform ID to CPU info structure") commit cda64169bade79427f264e43d0f422eaed9dc116 Author: Borislav Petkov <bp@alien8.de> Date: Wed May 13 22:06:01 2026 +0200 x86/microcode: Do not access MSR_IA32_PLATFORM_ID when running as a guest Patch in Fixes: causes the usual: unchecked MSR access error: RDMSR from 0x17 at ... (intel_get_platform_id) Call Trace: early_init_intel early_cpu_init setup_arch _printk start_kernel x86_64_start_reservations x86_64_start_kernel common_startup_64 because the kernel is booted in a guest. In order to avoid it, this MSR access needs to be prevented when running virtualized. That is usually done by checking X86_FEATURE_HYPERVISOR but for this particular case it is too early yet. The platform ID needs to be read as early as when microcode is loaded on the BSP: load_ucode_bsp ... -> get_microcode_blob ... -> intel_find_matching_signature and by that time, CPUID leafs haven't been parsed yet. The microcode loader already has logic to check early whether the kernel is running virtualized so make that globally available to arch/x86/. The query whether running virtualized is getting more and more prominent in recent times so might as well make it an arch-global var which the rest of the code can use. Fixes: d8630b67ca1ed ("x86/cpu: Add platform ID to CPU info structure") Reported-by: Vishal Verma <vishal.l.verma@intel.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> Tested-by: Binbin Wu <binbin.wu@linux.intel.com> Link: https://lore.kernel.org/all/20260430020953.1405535-1-binbin.wu@linux.intel.com ** Description changed: [ Impact ] The issue is Intel added code to Linux to check for old microcode. They base it on some processor fields not realizing there are multiple processor SKUs with the same processor field information. The result is the Linux wrongly prints out "Running old microcode" and sets taint bit 2 for some processor SKUs. It takes specific Intel processor SKUs to hit the issue. This has been seen with Sapphire Rapids and Granite Rapids processors [ Fix ] These patches fix the issue - + cda64169 x86/microcode: Do not access MSR_IA32_PLATFORM_ID when running as a guest 238be4ba x86/microcode: Refactor platform ID enumeration into a helper d8630b67 x86/cpu: Add platform ID to CPU info structure fab0c75d x86/cpu: Add platform ID to CPU matching structure 7989c393 x86/microcode: Add platform mask to Intel microcode "old" list The patches fix false-positive "old microcode"/taint-bit-2 reports on Sapphire Rapids and Granite Rapids SKUs. [ Test Plan ] After booting the system check the /proc/sys/kernel/tainted file for the incorrect microcode error Without the fix: root@gnh-204:~# cat /proc/sys/kernel/tainted 4 root@gnh-204:~# dmesg | grep microcode [ 0.000000] x86/CPU: Running old microcode [ 10.088285] microcode: Enabled staging feature. [ 10.092931] microcode: Current revision: 0x01000434 With the fix: root@gnh-204:~# cat /proc/sys/kernel/tainted 0 root@gnh-204:~# dmesg | grep microcode [ 10.090836] microcode: Enabled staging feature. [ 10.095475] microcode: Current revision: 0x01000434 [ Where problems could occur ] The regression risk is low. This code is only touching the x86 microcode/CPU-matching code path and no other subsystems are affected. [ Other Info ] https://code.launchpad.net/~mreed8855/ubuntu/+source/linux/+git/resolute/+ref/kernel_taint_lp_2161748_intel -- You received this bug notification because you are subscribed to linux in Ubuntu. Matching subscriptions: Bgg, Bmail, Nb https://bugs.launchpad.net/bugs/2161748 Title: [SRU][HPE] Take Intel platform into account for old microcode checks Status in linux package in Ubuntu: Fix Committed Status in linux source package in Resolute: In Progress Status in linux source package in Stonking: Fix Committed Bug description: [ Impact ] The issue is Intel added code to Linux to check for old microcode. They base it on some processor fields not realizing there are multiple processor SKUs with the same processor field information. The result is the Linux wrongly prints out "Running old microcode" and sets taint bit 2 for some processor SKUs. It takes specific Intel processor SKUs to hit the issue. This has been seen with Sapphire Rapids and Granite Rapids processors [ Fix ] These patches fix the issue cda64169 x86/microcode: Do not access MSR_IA32_PLATFORM_ID when running as a guest 238be4ba x86/microcode: Refactor platform ID enumeration into a helper d8630b67 x86/cpu: Add platform ID to CPU info structure fab0c75d x86/cpu: Add platform ID to CPU matching structure 7989c393 x86/microcode: Add platform mask to Intel microcode "old" list The patches fix false-positive "old microcode"/taint-bit-2 reports on Sapphire Rapids and Granite Rapids SKUs. [ Test Plan ] After booting the system check the /proc/sys/kernel/tainted file for the incorrect microcode error Without the fix: root@gnh-204:~# cat /proc/sys/kernel/tainted 4 root@gnh-204:~# dmesg | grep microcode [ 0.000000] x86/CPU: Running old microcode [ 10.088285] microcode: Enabled staging feature. [ 10.092931] microcode: Current revision: 0x01000434 With the fix: root@gnh-204:~# cat /proc/sys/kernel/tainted 0 root@gnh-204:~# dmesg | grep microcode [ 10.090836] microcode: Enabled staging feature. [ 10.095475] microcode: Current revision: 0x01000434 [ Where problems could occur ] The regression risk is low. This code is only touching the x86 microcode/CPU-matching code path and no other subsystems are affected. [ Other Info ] https://code.launchpad.net/~mreed8855/ubuntu/+source/linux/+git/resolute/+ref/kernel_taint_lp_2161748_intel To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2161748/+subscriptions
Комментариев нет:
Отправить комментарий