|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/3] x86: Add support for CpuidUserDis
On 05.05.2023 19:57, Alejandro Vallejo wrote:
> Includes a refactor to move vendor-specific probes to vendor-specific
> files.
I wonder whether the refactoring parts wouldn't better be split off.
> @@ -363,6 +375,21 @@ static void __init noinline amd_init_levelling(void)
> ctxt_switch_masking = amd_ctxt_switch_masking;
> }
>
> +void amd_set_cpuid_user_dis(bool enable)
> +{
> + const uint64_t msr_addr = MSR_K8_HWCR;
Nit: No MSR index is ever a 64-bit quantity. I'd recommend using MSR_K8_HWCR
directly in the two accesses below anyway, but otherwise the variable wants
to be "const unsigned int".
> + const uint64_t bit = K8_HWCR_CPUID_USER_DIS;
> + uint64_t val;
> +
> + rdmsrl(msr_addr, val);
> +
> + if (!!(val & bit) == enable)
> + return;
> +
> + val ^= bit;
> + wrmsrl(msr_addr, val);
> +}
>[...]
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -226,8 +226,17 @@ static void cf_check intel_ctxt_switch_masking(const
> struct vcpu *next)
> */
> static void __init noinline intel_init_levelling(void)
> {
> - if (probe_cpuid_faulting())
> + /* Intel Fam0f is old enough that probing for CPUID faulting support
Nit: Style (/* on its own line).
> + * introduces spurious #GP(0) when the appropriate MSRs are read,
> + * so skip it altogether. In the case where Xen is virtualized these
> + * MSRs may be emulated though, so we allow it in that case.
> + */
> + if ((cpu_has_hypervisor || boot_cpu_data.x86 !=0xf) &&
Nit: Style (blanks around binary operators). I'd also suggest swapping both
sides of the ||, to have the commonly true case first.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |