Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1423691 > unrolled thread
| Started by | Haozhong Zhang <haozhong.zhang@intel.com> |
|---|---|
| First post | 2016-06-16 08:10 +0200 |
| Last post | 2016-06-16 14:00 +0200 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx Haozhong Zhang <haozhong.zhang@intel.com> - 2016-06-16 08:10 +0200
Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx Borislav Petkov <bp@suse.de> - 2016-06-16 13:50 +0200
Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx Haozhong Zhang <haozhong.zhang@intel.com> - 2016-06-16 14:00 +0200
Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx Paolo Bonzini <pbonzini@redhat.com> - 2016-06-16 14:00 +0200
| From | Haozhong Zhang <haozhong.zhang@intel.com> |
|---|---|
| Date | 2016-06-16 08:10 +0200 |
| Subject | [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx |
| Message-ID | <rKyF3-4EY-1@gated-at.bofh.it> |
msr_ia32_feature_control will be used for LMCE and not depend only on
nested anymore, so move it from struct nested_vmx to struct vcpu_vmx.
Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
---
arch/x86/kvm/vmx.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 57ec6a4..6b63f2d 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -421,7 +421,6 @@ struct nested_vmx {
struct pi_desc *pi_desc;
bool pi_pending;
u16 posted_intr_nv;
- u64 msr_ia32_feature_control;
struct hrtimer preemption_timer;
bool preemption_timer_expired;
@@ -602,6 +601,8 @@ struct vcpu_vmx {
bool guest_pkru_valid;
u32 guest_pkru;
u32 host_pkru;
+
+ u64 msr_ia32_feature_control;
};
enum segment_cache_field {
@@ -2907,7 +2908,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_IA32_FEATURE_CONTROL:
if (!nested_vmx_allowed(vcpu))
return 1;
- msr_info->data = to_vmx(vcpu)->nested.msr_ia32_feature_control;
+ msr_info->data = to_vmx(vcpu)->msr_ia32_feature_control;
break;
case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC:
if (!nested_vmx_allowed(vcpu))
@@ -2999,10 +3000,10 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
break;
case MSR_IA32_FEATURE_CONTROL:
if (!nested_vmx_allowed(vcpu) ||
- (to_vmx(vcpu)->nested.msr_ia32_feature_control &
+ (to_vmx(vcpu)->msr_ia32_feature_control &
FEATURE_CONTROL_LOCKED && !msr_info->host_initiated))
return 1;
- vmx->nested.msr_ia32_feature_control = data;
+ vmx->msr_ia32_feature_control = data;
if (msr_info->host_initiated && data == 0)
vmx_leave_nested(vcpu);
break;
@@ -6859,7 +6860,7 @@ static int handle_vmon(struct kvm_vcpu *vcpu)
return 1;
}
- if ((vmx->nested.msr_ia32_feature_control & VMXON_NEEDED_FEATURES)
+ if ((vmx->msr_ia32_feature_control & VMXON_NEEDED_FEATURES)
!= VMXON_NEEDED_FEATURES) {
kvm_inject_gp(vcpu, 0);
return 1;
--
2.9.0
[toc] | [next] | [standalone]
| From | Borislav Petkov <bp@suse.de> |
|---|---|
| Date | 2016-06-16 13:50 +0200 |
| Subject | Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx |
| Message-ID | <rKDY5-7QS-9@gated-at.bofh.it> |
| In reply to | #1423691 |
On Thu, Jun 16, 2016 at 02:05:29PM +0800, Haozhong Zhang wrote:
> msr_ia32_feature_control will be used for LMCE and not depend only on
> nested anymore, so move it from struct nested_vmx to struct vcpu_vmx.
>
> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> ---
> arch/x86/kvm/vmx.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 57ec6a4..6b63f2d 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -421,7 +421,6 @@ struct nested_vmx {
> struct pi_desc *pi_desc;
> bool pi_pending;
> u16 posted_intr_nv;
> - u64 msr_ia32_feature_control;
>
> struct hrtimer preemption_timer;
> bool preemption_timer_expired;
> @@ -602,6 +601,8 @@ struct vcpu_vmx {
> bool guest_pkru_valid;
> u32 guest_pkru;
> u32 host_pkru;
> +
> + u64 msr_ia32_feature_control;
> };
>
> enum segment_cache_field {
> @@ -2907,7 +2908,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
> case MSR_IA32_FEATURE_CONTROL:
> if (!nested_vmx_allowed(vcpu))
> return 1;
> - msr_info->data = to_vmx(vcpu)->nested.msr_ia32_feature_control;
> + msr_info->data = to_vmx(vcpu)->msr_ia32_feature_control;
Since this moves out of struct nested_vmx, that check above it:
if (!nested_vmx_allowed(vcpu))
should not influence it anymore, no?
Ditto for the rest.
--
Regards/Gruss,
Boris.
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
--
[toc] | [prev] | [next] | [standalone]
| From | Haozhong Zhang <haozhong.zhang@intel.com> |
|---|---|
| Date | 2016-06-16 14:00 +0200 |
| Subject | Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx |
| Message-ID | <rKE7M-7Uc-11@gated-at.bofh.it> |
| In reply to | #1423981 |
On 06/16/16 13:49, Borislav Petkov wrote:
> On Thu, Jun 16, 2016 at 02:05:29PM +0800, Haozhong Zhang wrote:
> > msr_ia32_feature_control will be used for LMCE and not depend only on
> > nested anymore, so move it from struct nested_vmx to struct vcpu_vmx.
> >
> > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> > ---
> > arch/x86/kvm/vmx.c | 11 ++++++-----
> > 1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> > index 57ec6a4..6b63f2d 100644
> > --- a/arch/x86/kvm/vmx.c
> > +++ b/arch/x86/kvm/vmx.c
> > @@ -421,7 +421,6 @@ struct nested_vmx {
> > struct pi_desc *pi_desc;
> > bool pi_pending;
> > u16 posted_intr_nv;
> > - u64 msr_ia32_feature_control;
> >
> > struct hrtimer preemption_timer;
> > bool preemption_timer_expired;
> > @@ -602,6 +601,8 @@ struct vcpu_vmx {
> > bool guest_pkru_valid;
> > u32 guest_pkru;
> > u32 host_pkru;
> > +
> > + u64 msr_ia32_feature_control;
> > };
> >
> > enum segment_cache_field {
> > @@ -2907,7 +2908,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
> > case MSR_IA32_FEATURE_CONTROL:
> > if (!nested_vmx_allowed(vcpu))
> > return 1;
> > - msr_info->data = to_vmx(vcpu)->nested.msr_ia32_feature_control;
> > + msr_info->data = to_vmx(vcpu)->msr_ia32_feature_control;
>
> Since this moves out of struct nested_vmx, that check above it:
>
> if (!nested_vmx_allowed(vcpu))
>
> should not influence it anymore, no?
>
> Ditto for the rest.
>
The same check in the set case still makes sense. I can remove the
check here and leave it in the set case.
Thanks,
Haozhong
[toc] | [prev] | [next] | [standalone]
| From | Paolo Bonzini <pbonzini@redhat.com> |
|---|---|
| Date | 2016-06-16 14:00 +0200 |
| Subject | Re: [PATCH v2 1/3] KVM: VMX: move msr_ia32_feature_control to vcpu_vmx |
| Message-ID | <rKE7M-7Uc-13@gated-at.bofh.it> |
| In reply to | #1423981 |
On 16/06/2016 13:49, Borislav Petkov wrote:
>> > enum segment_cache_field {
>> > @@ -2907,7 +2908,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
>> > case MSR_IA32_FEATURE_CONTROL:
>> > if (!nested_vmx_allowed(vcpu))
>> > return 1;
>> > - msr_info->data = to_vmx(vcpu)->nested.msr_ia32_feature_control;
>> > + msr_info->data = to_vmx(vcpu)->msr_ia32_feature_control;
> Since this moves out of struct nested_vmx, that check above it:
>
> if (!nested_vmx_allowed(vcpu))
>
> should not influence it anymore, no?
For get, yes, this "if" should go.
For set, you need to check that the guest doesn't write to reserved
bits. So as of this patch the "if" remains tied to VMX, but the next
patch changes it to be generic.
Paolo
> Ditto for the rest.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web