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: |
