diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2010-09-10 11:30:45 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-10-24 04:52:32 -0400 |
commit | 3241f22da85d26505b39f525a88f52ebd1235975 (patch) | |
tree | 48b98fa9824a6f94cb4fc71d930864fb5f3527d2 /arch | |
parent | 52fde8df7dd13d90f5f8dc43157418bff968d90a (diff) |
KVM: MMU: Let is_rsvd_bits_set take mmu context instead of vcpu
This patch changes is_rsvd_bits_set() function prototype to
take only a kvm_mmu context instead of a full vcpu.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/mmu.c | 6 | ||||
-rw-r--r-- | arch/x86/kvm/paging_tmpl.h | 7 |
2 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 9e48a774fceb..86f7557cf3fb 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -2578,12 +2578,12 @@ static void paging_free(struct kvm_vcpu *vcpu) | |||
2578 | nonpaging_free(vcpu); | 2578 | nonpaging_free(vcpu); |
2579 | } | 2579 | } |
2580 | 2580 | ||
2581 | static bool is_rsvd_bits_set(struct kvm_vcpu *vcpu, u64 gpte, int level) | 2581 | static bool is_rsvd_bits_set(struct kvm_mmu *mmu, u64 gpte, int level) |
2582 | { | 2582 | { |
2583 | int bit7; | 2583 | int bit7; |
2584 | 2584 | ||
2585 | bit7 = (gpte >> 7) & 1; | 2585 | bit7 = (gpte >> 7) & 1; |
2586 | return (gpte & vcpu->arch.mmu.rsvd_bits_mask[bit7][level-1]) != 0; | 2586 | return (gpte & mmu->rsvd_bits_mask[bit7][level-1]) != 0; |
2587 | } | 2587 | } |
2588 | 2588 | ||
2589 | #define PTTYPE 64 | 2589 | #define PTTYPE 64 |
@@ -2859,7 +2859,7 @@ static void mmu_pte_write_new_pte(struct kvm_vcpu *vcpu, | |||
2859 | return; | 2859 | return; |
2860 | } | 2860 | } |
2861 | 2861 | ||
2862 | if (is_rsvd_bits_set(vcpu, *(u64 *)new, PT_PAGE_TABLE_LEVEL)) | 2862 | if (is_rsvd_bits_set(&vcpu->arch.mmu, *(u64 *)new, PT_PAGE_TABLE_LEVEL)) |
2863 | return; | 2863 | return; |
2864 | 2864 | ||
2865 | ++vcpu->kvm->stat.mmu_pte_updated; | 2865 | ++vcpu->kvm->stat.mmu_pte_updated; |
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 13d0c06b1bc8..68ee1b7fa89f 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h | |||
@@ -168,7 +168,7 @@ walk: | |||
168 | break; | 168 | break; |
169 | } | 169 | } |
170 | 170 | ||
171 | if (is_rsvd_bits_set(vcpu, pte, walker->level)) { | 171 | if (is_rsvd_bits_set(&vcpu->arch.mmu, pte, walker->level)) { |
172 | rsvd_fault = true; | 172 | rsvd_fault = true; |
173 | break; | 173 | break; |
174 | } | 174 | } |
@@ -327,6 +327,7 @@ static void FNAME(pte_prefetch)(struct kvm_vcpu *vcpu, struct guest_walker *gw, | |||
327 | u64 *sptep) | 327 | u64 *sptep) |
328 | { | 328 | { |
329 | struct kvm_mmu_page *sp; | 329 | struct kvm_mmu_page *sp; |
330 | struct kvm_mmu *mmu = &vcpu->arch.mmu; | ||
330 | pt_element_t *gptep = gw->prefetch_ptes; | 331 | pt_element_t *gptep = gw->prefetch_ptes; |
331 | u64 *spte; | 332 | u64 *spte; |
332 | int i; | 333 | int i; |
@@ -358,7 +359,7 @@ static void FNAME(pte_prefetch)(struct kvm_vcpu *vcpu, struct guest_walker *gw, | |||
358 | gpte = gptep[i]; | 359 | gpte = gptep[i]; |
359 | 360 | ||
360 | if (!is_present_gpte(gpte) || | 361 | if (!is_present_gpte(gpte) || |
361 | is_rsvd_bits_set(vcpu, gpte, PT_PAGE_TABLE_LEVEL)) { | 362 | is_rsvd_bits_set(mmu, gpte, PT_PAGE_TABLE_LEVEL)) { |
362 | if (!sp->unsync) | 363 | if (!sp->unsync) |
363 | __set_spte(spte, shadow_notrap_nonpresent_pte); | 364 | __set_spte(spte, shadow_notrap_nonpresent_pte); |
364 | continue; | 365 | continue; |
@@ -713,7 +714,7 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, | |||
713 | return -EINVAL; | 714 | return -EINVAL; |
714 | 715 | ||
715 | gfn = gpte_to_gfn(gpte); | 716 | gfn = gpte_to_gfn(gpte); |
716 | if (is_rsvd_bits_set(vcpu, gpte, PT_PAGE_TABLE_LEVEL) | 717 | if (is_rsvd_bits_set(&vcpu->arch.mmu, gpte, PT_PAGE_TABLE_LEVEL) |
717 | || gfn != sp->gfns[i] || !is_present_gpte(gpte) | 718 | || gfn != sp->gfns[i] || !is_present_gpte(gpte) |
718 | || !(gpte & PT_ACCESSED_MASK)) { | 719 | || !(gpte & PT_ACCESSED_MASK)) { |
719 | u64 nonpresent; | 720 | u64 nonpresent; |