x86/cpu-policy: Rearrange guest_common_default_feature_adjustments()

This is prep work, split out to simply the diff on the following change.

 * Split the INTEL check out of the IvyBridge RDRAND check, as the former will
   be reused.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit 064f572f96)
This commit is contained in:
Andrew Cooper committed 2023-08-03 19:14:19 +01:00
1 parent 06a2b62145
commit 5619a526ea
1 file changed
+18 -15
+18 -15
View File
@@ -429,21 +429,24 @@ static void __init guest_common_max_feature_adjustments(uint32_t *fs)
static void __init guest_common_default_feature_adjustments(uint32_t *fs)
{
/*
* IvyBridge client parts suffer from leakage of RDRAND data due to SRBDS
* (XSA-320 / CVE-2020-0543), and won't be receiving microcode to
* compensate.
*
* Mitigate by hiding RDRAND from guests by default, unless explicitly
* overridden on the Xen command line (cpuid=rdrand). Irrespective of the
* default setting, guests can use RDRAND if explicitly enabled
* (cpuid="host,rdrand=1") in the VM's config file, and VMs which were
* previously using RDRAND can migrate in.
*/
if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 0x3a &&
cpu_has_rdrand && !is_forced_cpu_cap(X86_FEATURE_RDRAND) )
__clear_bit(X86_FEATURE_RDRAND, fs);
if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
{
/*
* IvyBridge client parts suffer from leakage of RDRAND data due to SRBDS
* (XSA-320 / CVE-2020-0543), and won't be receiving microcode to
* compensate.
*
* Mitigate by hiding RDRAND from guests by default, unless explicitly
* overridden on the Xen command line (cpuid=rdrand). Irrespective of the
* default setting, guests can use RDRAND if explicitly enabled
* (cpuid="host,rdrand=1") in the VM's config file, and VMs which were
* previously using RDRAND can migrate in.
*/
if ( boot_cpu_data.x86 == 6 &&
boot_cpu_data.x86_model == 0x3a /* INTEL_FAM6_IVYBRIDGE */ &&
cpu_has_rdrand && !is_forced_cpu_cap(X86_FEATURE_RDRAND) )
__clear_bit(X86_FEATURE_RDRAND, fs);
}
/*
* On certain hardware, speculative or errata workarounds can result in
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.