Message ID | 1581088965-3334-1-git-send-email-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] KVM: nVMX: Fix some comment typos and coding style | expand |
linmiaohe <linmiaohe@huawei.com> writes: > From: Miaohe Lin <linmiaohe@huawei.com> > > Fix some typos in the comments. Also fix coding style. > [Sean Christopherson rewrites the comment of write_fault_to_shadow_pgtable > field in struct kvm_vcpu_arch.] > > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > --- > v1->v2: > Use Sean Christopherson' comment for write_fault_to_shadow_pgtable > --- > arch/x86/include/asm/kvm_host.h | 16 +++++++++++++--- > arch/x86/kvm/vmx/nested.c | 5 +++-- > 2 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 4dffbc10d3f8..40a0c0fd95ca 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -781,9 +781,19 @@ struct kvm_vcpu_arch { > u64 msr_kvm_poll_control; > > /* > - * Indicate whether the access faults on its page table in guest > - * which is set when fix page fault and used to detect unhandeable > - * instruction. > + * Indicates the guest is trying to write a gfn that contains one or > + * more of the PTEs used to translate the write itself, i.e. the access > + * is changing its own translation in the guest page tables. KVM exits > + * to userspace if emulation of the faulting instruction fails and this > + * flag is set, as KVM cannot make forward progress. > + * > + * If emulation fails for a write to guest page tables, KVM unprotects > + * (zaps) the shadow page for the target gfn and resumes the guest to > + * retry the non-emulatable instruction (on hardware). Unprotecting the > + * gfn doesn't allow forward progress for a self-changing access because > + * doing so also zaps the translation for the gfn, i.e. retrying the > + * instruction will hit a !PRESENT fault, which results in a new shadow > + * page and sends KVM back to square one. > */ > bool write_fault_to_shadow_pgtable; > > diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c > index 657c2eda357c..e7faebccd733 100644 > --- a/arch/x86/kvm/vmx/nested.c > +++ b/arch/x86/kvm/vmx/nested.c > @@ -544,7 +544,8 @@ static void nested_vmx_disable_intercept_for_msr(unsigned long *msr_bitmap_l1, > } > } > > -static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) { > +static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) > +{ > int msr; > > for (msr = 0x800; msr <= 0x8ff; msr += BITS_PER_LONG) { > @@ -1981,7 +1982,7 @@ static int nested_vmx_handle_enlightened_vmptrld(struct kvm_vcpu *vcpu, > } > > /* > - * Clean fields data can't de used on VMLAUNCH and when we switch > + * Clean fields data can't be used on VMLAUNCH and when we switch > * between different L2 guests as KVM keeps a single VMCS12 per L1. > */ > if (from_launch || evmcs_gpa_changed) With Sean's comment added the subject of the patch is a bit unexpected :-) But the change itself looks good (and thanks Sean for the great explanation!). Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
On 07/02/20 16:22, linmiaohe wrote: > From: Miaohe Lin <linmiaohe@huawei.com> > > Fix some typos in the comments. Also fix coding style. > [Sean Christopherson rewrites the comment of write_fault_to_shadow_pgtable > field in struct kvm_vcpu_arch.] > > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > --- > v1->v2: > Use Sean Christopherson' comment for write_fault_to_shadow_pgtable > --- > arch/x86/include/asm/kvm_host.h | 16 +++++++++++++--- > arch/x86/kvm/vmx/nested.c | 5 +++-- > 2 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 4dffbc10d3f8..40a0c0fd95ca 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -781,9 +781,19 @@ struct kvm_vcpu_arch { > u64 msr_kvm_poll_control; > > /* > - * Indicate whether the access faults on its page table in guest > - * which is set when fix page fault and used to detect unhandeable > - * instruction. > + * Indicates the guest is trying to write a gfn that contains one or > + * more of the PTEs used to translate the write itself, i.e. the access > + * is changing its own translation in the guest page tables. KVM exits > + * to userspace if emulation of the faulting instruction fails and this > + * flag is set, as KVM cannot make forward progress. > + * > + * If emulation fails for a write to guest page tables, KVM unprotects > + * (zaps) the shadow page for the target gfn and resumes the guest to > + * retry the non-emulatable instruction (on hardware). Unprotecting the > + * gfn doesn't allow forward progress for a self-changing access because > + * doing so also zaps the translation for the gfn, i.e. retrying the > + * instruction will hit a !PRESENT fault, which results in a new shadow > + * page and sends KVM back to square one. > */ > bool write_fault_to_shadow_pgtable; > > diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c > index 657c2eda357c..e7faebccd733 100644 > --- a/arch/x86/kvm/vmx/nested.c > +++ b/arch/x86/kvm/vmx/nested.c > @@ -544,7 +544,8 @@ static void nested_vmx_disable_intercept_for_msr(unsigned long *msr_bitmap_l1, > } > } > > -static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) { > +static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) > +{ > int msr; > > for (msr = 0x800; msr <= 0x8ff; msr += BITS_PER_LONG) { > @@ -1981,7 +1982,7 @@ static int nested_vmx_handle_enlightened_vmptrld(struct kvm_vcpu *vcpu, > } > > /* > - * Clean fields data can't de used on VMLAUNCH and when we switch > + * Clean fields data can't be used on VMLAUNCH and when we switch > * between different L2 guests as KVM keeps a single VMCS12 per L1. > */ > if (from_launch || evmcs_gpa_changed) > Queued, thanks. Paolo
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 4dffbc10d3f8..40a0c0fd95ca 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -781,9 +781,19 @@ struct kvm_vcpu_arch { u64 msr_kvm_poll_control; /* - * Indicate whether the access faults on its page table in guest - * which is set when fix page fault and used to detect unhandeable - * instruction. + * Indicates the guest is trying to write a gfn that contains one or + * more of the PTEs used to translate the write itself, i.e. the access + * is changing its own translation in the guest page tables. KVM exits + * to userspace if emulation of the faulting instruction fails and this + * flag is set, as KVM cannot make forward progress. + * + * If emulation fails for a write to guest page tables, KVM unprotects + * (zaps) the shadow page for the target gfn and resumes the guest to + * retry the non-emulatable instruction (on hardware). Unprotecting the + * gfn doesn't allow forward progress for a self-changing access because + * doing so also zaps the translation for the gfn, i.e. retrying the + * instruction will hit a !PRESENT fault, which results in a new shadow + * page and sends KVM back to square one. */ bool write_fault_to_shadow_pgtable; diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index 657c2eda357c..e7faebccd733 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -544,7 +544,8 @@ static void nested_vmx_disable_intercept_for_msr(unsigned long *msr_bitmap_l1, } } -static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) { +static inline void enable_x2apic_msr_intercepts(unsigned long *msr_bitmap) +{ int msr; for (msr = 0x800; msr <= 0x8ff; msr += BITS_PER_LONG) { @@ -1981,7 +1982,7 @@ static int nested_vmx_handle_enlightened_vmptrld(struct kvm_vcpu *vcpu, } /* - * Clean fields data can't de used on VMLAUNCH and when we switch + * Clean fields data can't be used on VMLAUNCH and when we switch * between different L2 guests as KVM keeps a single VMCS12 per L1. */ if (from_launch || evmcs_gpa_changed)