On Mon, Nov 9, 2020 at 2:57 PM Luck, Tony <tony.luck@xxxxxxxxx> wrote: > > > I thought Linux had long ago gone the route of turning rdmsr/wrmsr > > into rdmsr_safe/wrmsr_safe, so that the guest would ignore the #GPs on > > writes and return zero to the caller for #GPs on reads. > > Linux just switched that around for the machine check banks ... if they #GP > fault, then something is seriously wrong. > > Maybe that isn't a general change of direction though. Perhaps I > should either use rdmsrl_safe() in this code. Or (better?) add > > if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) > return; > > to the start of intel_imc_init(). I wouldn't expect all hypervisors to necessarily set CPUID.01H:ECX[bit 31]. Architecturally, on Intel CPUs, that bit is simply defined as "not used." There is no documented contract between Intel and hypervisor vendors regarding the use of that bit. (AMD, on the other hand, *does* document that bit as "reserved for use by hypervisor to indicate guest status.")