Re: [PATCH v6 03/19] i386: always fill Hyper-V CPUID feature leaves from X86CPU data

2021-04-30 Thread Eduardo Habkost
On Thu, Apr 22, 2021 at 06:11:14PM +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.
> 
> Signed-off-by: Vitaly Kuznetsov 

This makes hv-passthrough less useful for debugging and
development, but safer for using in production.  I assume we want
to eventually make hv-passthrough supported in production when
live migration support isn't required.

I'll trust your judgement here and assume this is really a good
change, but maybe this should be documented more explicitly in
the hv-passthrough section at docs/hyperv.txt?

Anyway:

Reviewed-by: Eduardo Habkost 

> ---
>  target/i386/kvm/kvm.c | 9 -
>  1 file changed, 9 deletions(-)
> 
> diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
> index afd173514da1..7c751185491f 100644
> --- a/target/i386/kvm/kvm.c
> +++ b/target/i386/kvm/kvm.c
> @@ -1207,9 +1207,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;
> @@ -1309,12 +1306,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.30.2
> 

-- 
Eduardo




[PATCH v6 03/19] i386: always fill Hyper-V CPUID feature leaves from X86CPU data

2021-04-22 Thread Vitaly Kuznetsov
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.

Signed-off-by: Vitaly Kuznetsov 
---
 target/i386/kvm/kvm.c | 9 -
 1 file changed, 9 deletions(-)

diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index afd173514da1..7c751185491f 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -1207,9 +1207,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;
@@ -1309,12 +1306,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.30.2