The paravirt interface will export set_pud for 3-level pagetables. Hook it.

Signed-off-by: Marcelo Tosatti <[EMAIL PROTECTED]>

Index: kvm.first/arch/x86/kernel/kvm.c
===================================================================
--- kvm.first.orig/arch/x86/kernel/kvm.c
+++ kvm.first/arch/x86/kernel/kvm.c
@@ -296,15 +296,17 @@ static void kvm_pmd_clear(pmd_t *pmdp)
 }
 #endif
 
-static void kvm_set_pgd(pgd_t *pgdp, pgd_t pgd)
+static void kvm_set_pud(pud_t *pudp, pud_t pud)
 {
-       kvm_mmu_write(pgdp, pgd_val(pgd));
+       kvm_mmu_write(pudp, pud_val(pud));
 }
 
-static void kvm_set_pud(pud_t *pudp, pud_t pud)
+#if PAGETABLE_LEVELS == 4
+static void kvm_set_pgd(pgd_t *pgdp, pgd_t pgd)
 {
-       kvm_mmu_write(pudp, pud_val(pud));
+       kvm_mmu_write(pgdp, pgd_val(pgd));
 }
+#endif
 #endif /* PAGETABLE_LEVELS >= 3 */
 
 static void kvm_flush_tlb(void)
@@ -363,8 +365,10 @@ static void paravirt_ops_setup(void)
                pv_mmu_ops.pmd_clear = kvm_pmd_clear;
 #endif
                pv_mmu_ops.set_pud = kvm_set_pud;
+#if PAGETABLE_LEVELS == 4
                pv_mmu_ops.set_pgd = kvm_set_pgd;
 #endif
+#endif
                pv_mmu_ops.flush_tlb_user = kvm_flush_tlb;
                pv_mmu_ops.release_pt = kvm_release_pt;
                pv_mmu_ops.release_pd = kvm_release_pt;

-- 


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to