diff options
author | Vadim Rozenfeld <vrozenfe@redhat.com> | 2014-01-23 02:12:53 -0500 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-01-24 10:51:15 -0500 |
commit | b3af1e889ec4909f6b48dabd19a311d9c9f8d58e (patch) | |
tree | 7817262c9300d08bc95b74be396288e91518de52 | |
parent | b94b64c9a79a322802f13f44e9690a7b6a22710e (diff) |
KVM: x86: mark hyper-v vapic assist page as dirty
Signed-off-by: Vadim Rozenfeld <vrozenfe@redhat.com>
Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | arch/x86/kvm/x86.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 0fa9c84e36cb..dc11b4f98577 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -1869,19 +1869,21 @@ static int set_msr_hyperv(struct kvm_vcpu *vcpu, u32 msr, u64 data) | |||
1869 | { | 1869 | { |
1870 | switch (msr) { | 1870 | switch (msr) { |
1871 | case HV_X64_MSR_APIC_ASSIST_PAGE: { | 1871 | case HV_X64_MSR_APIC_ASSIST_PAGE: { |
1872 | u64 gfn; | ||
1872 | unsigned long addr; | 1873 | unsigned long addr; |
1873 | 1874 | ||
1874 | if (!(data & HV_X64_MSR_APIC_ASSIST_PAGE_ENABLE)) { | 1875 | if (!(data & HV_X64_MSR_APIC_ASSIST_PAGE_ENABLE)) { |
1875 | vcpu->arch.hv_vapic = data; | 1876 | vcpu->arch.hv_vapic = data; |
1876 | break; | 1877 | break; |
1877 | } | 1878 | } |
1878 | addr = gfn_to_hva(vcpu->kvm, data >> | 1879 | gfn = data >> HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_SHIFT; |
1879 | HV_X64_MSR_APIC_ASSIST_PAGE_ADDRESS_SHIFT); | 1880 | addr = gfn_to_hva(vcpu->kvm, gfn); |
1880 | if (kvm_is_error_hva(addr)) | 1881 | if (kvm_is_error_hva(addr)) |
1881 | return 1; | 1882 | return 1; |
1882 | if (__clear_user((void __user *)addr, PAGE_SIZE)) | 1883 | if (__clear_user((void __user *)addr, PAGE_SIZE)) |
1883 | return 1; | 1884 | return 1; |
1884 | vcpu->arch.hv_vapic = data; | 1885 | vcpu->arch.hv_vapic = data; |
1886 | mark_page_dirty(vcpu->kvm, gfn); | ||
1885 | break; | 1887 | break; |
1886 | } | 1888 | } |
1887 | case HV_X64_MSR_EOI: | 1889 | case HV_X64_MSR_EOI: |