Re: [PATCH v14 8/9] KVM: x86: virtualize cpuid faulting

Andy Lutomirski <[email protected]> Fri, 27 Jul 2018 14:05:40 -0700
Newsgroups gmane.linux.kernel,gmane.linux.uml.devel,gmane.linux.uml.user,gmane.linux.file-systems,gmane.comp.emulators.kvm.devel
Message-ID <CALCETrVzH+9cJtxTHj300jDWx7S1bLxYCGX==7zHish9J5aFAQ@mail.gmail.com>
On Fri, Jul 27, 2018 at 2:03 PM, Jim Mattson <[email protected]> wrote:
> On Fri, Jul 27, 2018 at 1:46 PM, Andy Lutomirski <[email protected]> wr=
ote:
>>> On Jul 27, 2018, at 1:28 PM, Jim Mattson <[email protected]> wrote:
>>> Initializing this bit to zero helps with migration, but then if the
>>> CPUID faulting bits in both MSRs are set, userspace has to take pains
>>> to ensure that MSR_PLATFORM_INFO is restored first, or the
>>> MSR_MISC_FEATURES_ENABLES value will be rejected.
>>
>> The code could drop the constraint and just let the entry possibly fail =
if the MSRs are set wrong
>
> That would be an improvement, I think.

I personally don't know enough about the QEMU, kvmtool, etc
architecture to know whether this would be a good idea.

>
>>> I'm also concerned about the 0 in the "Maximum Non-Turbo Ratio" field
>>> feeding into someone's calculated TSC frequency.
>>
>> Hmm. I don=E2=80=99t have a good answer to that. Are there any real CPUs=
 that have this MSR but don=E2=80=99t have that field?
>
> No. The reason I bring this up is that a customer has code that
> expects to be able to derive the TSC frequency from this MSR (per
> Intel's instructions in SDM volume 3, section 18.7.3), and they were
> surprised to find that the MSR raises #GP on our platform. We're
> looking into cherry-picking this support from upstream as a start, but
> I know the customer would be unhappy to read zero from bits 15:8.

Does KVM *have* a concept of "maximum non-turbo frequency" of the
guest that it would make sense to expose here?  If so, presumably the
right solution is to expose it.