From: Andrew Cooper Date: Fri, 10 Mar 2023 16:23:20 +0000 (+0000) Subject: x86/cpu-policy: Rearrange guest_common_default_feature_adjustments() X-Git-Tag: RELEASE-4.15.5~22 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=ecbb75a6f8fe3ebbf18dfe29a635b3684a1a5b89;p=xen.git 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 Acked-by: Jan Beulich (cherry picked from commit 064f572f96f1558faae0a74cad616ba95ec8ff34) --- diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c index 19d955a9ed..1e33e72fc3 100644 --- a/xen/arch/x86/cpu-policy.c +++ b/xen/arch/x86/cpu-policy.c @@ -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