Message ID | 20190705210636.3095-3-liran.alon@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/i386: kvm: Various nested-state fixes | expand |
On 7/5/2019 2:06 PM, Liran Alon wrote: > Reviewed-by: Joao Martins <joao.m.martins@oracle.com> > Signed-off-by: Liran Alon <liran.alon@oracle.com> > --- > target/i386/cpu.h | 5 +++++ > target/i386/kvm.c | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/target/i386/cpu.h b/target/i386/cpu.h > index 93345792f4cb..cdb0e43676a9 100644 > --- a/target/i386/cpu.h > +++ b/target/i386/cpu.h > @@ -1867,6 +1867,11 @@ static inline bool cpu_has_vmx(CPUX86State *env) > return env->features[FEAT_1_ECX] & CPUID_EXT_VMX; > } > > +static inline bool cpu_has_svm(CPUX86State *env) > +{ > + return env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM; > +} > + > /* fpu_helper.c */ > void update_fp_status(CPUX86State *env); > void update_mxcsr_status(CPUX86State *env); > diff --git a/target/i386/kvm.c b/target/i386/kvm.c > index b57f873ec9e8..4e2c8652168f 100644 > --- a/target/i386/kvm.c > +++ b/target/i386/kvm.c > @@ -1721,6 +1721,8 @@ int kvm_arch_init_vcpu(CPUState *cs) > env->nested_state->format = KVM_STATE_NESTED_FORMAT_VMX; > vmx_hdr->vmxon_pa = -1ull; > vmx_hdr->vmcs12_pa = -1ull; > + } else if (cpu_has_svm(env)) { > + env->nested_state->format = KVM_STATE_NESTED_FORMAT_SVM; > } > } > Reviewed-by: Maran Wilson <maran.wilson@oracle.com> Thanks, -Maran
On 05/07/19 23:06, Liran Alon wrote: > Reviewed-by: Joao Martins <joao.m.martins@oracle.com> > Signed-off-by: Liran Alon <liran.alon@oracle.com> > --- > target/i386/cpu.h | 5 +++++ > target/i386/kvm.c | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/target/i386/cpu.h b/target/i386/cpu.h > index 93345792f4cb..cdb0e43676a9 100644 > --- a/target/i386/cpu.h > +++ b/target/i386/cpu.h > @@ -1867,6 +1867,11 @@ static inline bool cpu_has_vmx(CPUX86State *env) > return env->features[FEAT_1_ECX] & CPUID_EXT_VMX; > } > > +static inline bool cpu_has_svm(CPUX86State *env) > +{ > + return env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM; > +} > + > /* fpu_helper.c */ > void update_fp_status(CPUX86State *env); > void update_mxcsr_status(CPUX86State *env); > diff --git a/target/i386/kvm.c b/target/i386/kvm.c > index b57f873ec9e8..4e2c8652168f 100644 > --- a/target/i386/kvm.c > +++ b/target/i386/kvm.c > @@ -1721,6 +1721,8 @@ int kvm_arch_init_vcpu(CPUState *cs) > env->nested_state->format = KVM_STATE_NESTED_FORMAT_VMX; > vmx_hdr->vmxon_pa = -1ull; > vmx_hdr->vmcs12_pa = -1ull; > + } else if (cpu_has_svm(env)) { > + env->nested_state->format = KVM_STATE_NESTED_FORMAT_SVM; > } > } > > I'm not sure about it. We have no idea what the format will be, so we shouldn't set the format carelessly. Paolo
diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 93345792f4cb..cdb0e43676a9 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1867,6 +1867,11 @@ static inline bool cpu_has_vmx(CPUX86State *env) return env->features[FEAT_1_ECX] & CPUID_EXT_VMX; } +static inline bool cpu_has_svm(CPUX86State *env) +{ + return env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM; +} + /* fpu_helper.c */ void update_fp_status(CPUX86State *env); void update_mxcsr_status(CPUX86State *env); diff --git a/target/i386/kvm.c b/target/i386/kvm.c index b57f873ec9e8..4e2c8652168f 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1721,6 +1721,8 @@ int kvm_arch_init_vcpu(CPUState *cs) env->nested_state->format = KVM_STATE_NESTED_FORMAT_VMX; vmx_hdr->vmxon_pa = -1ull; vmx_hdr->vmcs12_pa = -1ull; + } else if (cpu_has_svm(env)) { + env->nested_state->format = KVM_STATE_NESTED_FORMAT_SVM; } }