Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1453622

Re: [RFC PATCH 4/4] KVM: vmx: add support for emulating UMIP

From Wanpeng Li <kernellwp@gmail.com>
Newsgroups linux.kernel
Subject Re: [RFC PATCH 4/4] KVM: vmx: add support for emulating UMIP
Date 2016-08-02 09:00 +0200
Message-ID <s1BQe-TD-9@gated-at.bofh.it> (permalink)
References (1 earlier) <rUbxw-Oh-27@gated-at.bofh.it> <rUz6N-83G-19@gated-at.bofh.it> <rUK2f-75j-65@gated-at.bofh.it> <s0OPv-2vt-5@gated-at.bofh.it> <s1n0S-7W5-17@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


2016-08-01 23:01 GMT+08:00 Paolo Bonzini <pbonzini@redhat.com>:
>
>
> On 31/07/2016 04:32, Wanpeng Li wrote:
>> 2016-07-14 16:09 GMT+08:00 Paolo Bonzini <pbonzini@redhat.com>:
>> [...]
>>>
>>> This is not necessary because this is how KVM computes
>>> CPUID[EAX=7,EBX=0].ECX:
>>>
>>>         unsigned f_umip = kvm_x86_ops->umip_emulated() ? F(UMIP) : 0;
>>>         ...
>>>         const u32 kvm_cpuid_7_0_ecx_x86_features = F(PKU) | F(UMIP);
>>>         ...
>>>         // Mask userspace-provided value against supported features
>>>         entry->ecx &= kvm_cpuid_7_0_ecx_x86_features;
>>>         // Mask userspace-provided value against host features
>>>         cpuid_mask(&entry->ecx, CPUID_7_ECX);
>>>         // Finally add emulated features
>>>         entry->ecx |= f_umip;
>>
>> I think you mean:
>>
>> - entry->ecx  ->  userspace-provided value
>> - kvm_cpuid_7_0_ecx_x86_features  ->  supported features
>> - CPUID_7_ECX  ->  host features
>>
>> However, entry->ecx is returned by cpuid instruction
>> (do_cpuid_1_ent()), so why it is a userspace-provided value?
>
> You're right, it's this:
>
>          // Mask host processor value against supported features
>          entry->ecx &= kvm_cpuid_7_0_ecx_x86_features;
>          // Mask host processor value further, e.g. to drop
>          // features that the host kernel has blacklisted.
>          cpuid_mask(&entry->ecx, CPUID_7_ECX);
>          // Finally add emulated features
>          entry->ecx |= f_umip;
>

Cool, more clear this time. :)

> The idea is the same. :)
>
> On the other hand, it is true that in many cases of the "switch
> (function)" the call to do_cpuid_1_ent is unnecessary, and instead of
> cpuid_mask you could just access boot_cpu_data.x86_capability[wordnum].

Agreed.

Regards,
Wanpeng Li

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Re: [RFC PATCH 4/4] KVM: vmx: add support for emulating UMIP Wanpeng Li <kernellwp@gmail.com> - 2016-07-31 04:40 +0200
  Re: [RFC PATCH 4/4] KVM: vmx: add support for emulating UMIP Paolo Bonzini <pbonzini@redhat.com> - 2016-08-01 17:10 +0200
    Re: [RFC PATCH 4/4] KVM: vmx: add support for emulating UMIP Wanpeng Li <kernellwp@gmail.com> - 2016-08-02 09:00 +0200

csiph-web