[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC 12/22] i386: always fill Hyper-V CPUID feature leaves fro
From: |
Vitaly Kuznetsov |
Subject: |
Re: [PATCH RFC 12/22] i386: always fill Hyper-V CPUID feature leaves from X86CPU data |
Date: |
Tue, 22 Sep 2020 12:30:10 +0200 |
Eduardo Habkost <ehabkost@redhat.com> writes:
> On Fri, Sep 04, 2020 at 04:54:21PM +0200, Vitaly Kuznetsov wrote:
>> We have all the required data in X86CPU already and as we are about to
>> split hyperv_handle_properties() into hyperv_expand_features()/
>> hyperv_fill_cpuids() we can remove the blind copy. The functional change
>> is that QEMU won't pass CPUID leaves it doesn't currently know about
>> to the guest but arguably this is a good change.
>
> Is it, though? Maybe we don't want it to be the default, but a
> blind passthrough mode that copies all CPUID leaves would be
> useful for testing new features.
>
We already have Hyper-V features which require extra work to get enabled
(SynIC, EVMCS). Passing corresponding feature bits to guests without
actually enabling these features in KVM will likely break them. So a pure
'blind passthrough' mode is not possible.
>>
>> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
>> ---
>> target/i386/kvm.c | 9 ---------
>> 1 file changed, 9 deletions(-)
>>
>> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
>> index 87b83a2aa2cb..b7f0e200a75f 100644
>> --- a/target/i386/kvm.c
>> +++ b/target/i386/kvm.c
>> @@ -1221,9 +1221,6 @@ static int hyperv_handle_properties(CPUState *cs,
>> }
>>
>> if (cpu->hyperv_passthrough) {
>> - memcpy(cpuid_ent, &cpuid->entries[0],
>> - cpuid->nent * sizeof(cpuid->entries[0]));
>> -
>> c = cpuid_find_entry(cpuid, HV_CPUID_VENDOR_AND_MAX_FUNCTIONS, 0);
>> if (c) {
>> cpu->hyperv_vendor_id[0] = c->ebx;
>> @@ -1325,12 +1322,6 @@ static int hyperv_handle_properties(CPUState *cs,
>> goto free;
>> }
>>
>> - if (cpu->hyperv_passthrough) {
>> - /* We already copied all feature words from KVM as is */
>> - r = cpuid->nent;
>> - goto free;
>> - }
>> -
>> c = &cpuid_ent[cpuid_i++];
>> c->function = HV_CPUID_VENDOR_AND_MAX_FUNCTIONS;
>> c->eax = hyperv_feat_enabled(cpu, HYPERV_FEAT_EVMCS) ?
>> --
>> 2.25.4
>>
--
Vitaly
- [PATCH RFC 02/22] i386: drop x86_cpu_get_supported_feature_word() forward declaration, (continued)
- [PATCH RFC 02/22] i386: drop x86_cpu_get_supported_feature_word() forward declaration, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 10/22] i386: add reserved FEAT_HV_RECOMM_ECX/FEAT_HV_RECOMM_EDX CPUID leaves, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 05/22] i386: move hyperv_version_id initialization to x86_cpu_realizefn(), Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 09/22] i386: add reserved FEAT_HYPERV_ECX CPUID leaf, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 13/22] i386: split hyperv_handle_properties() into hyperv_expand_features()/hyperv_fill_cpuids(), Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 12/22] i386: always fill Hyper-V CPUID feature leaves from X86CPU data, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 15/22] i386: switch hyperv_expand_features() to using error_setg(), Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 18/22] i386: prefer system KVM_GET_SUPPORTED_HV_CPUID ioctl over vCPU's one, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 22/22] i386: expand Hyper-V features early, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 21/22] i386: record if Hyper-V features were already expanded, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 19/22] i386: prepare hyperv_expand_features() to be called at CPU feature expansion time, Vitaly Kuznetsov, 2020/09/04
- [PATCH RFC 16/22] i386: make hyperv_expand_features() return void, Vitaly Kuznetsov, 2020/09/04