diff -r 8ca23cd6190f xen/include/asm-x86/shadow.h --- a/xen/include/asm-x86/shadow.h Wed Aug 02 11:09:15 2006 +0100 +++ b/xen/include/asm-x86/shadow.h Wed Aug 02 11:09:37 2006 +0100 @@ -178,11 +178,6 @@ extern void shadow_l2_normal_pt_update(s ((s) >= (L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES - 1))) ) extern unsigned long gva_to_gpa(unsigned long gva); -static inline unsigned long gva_to_mfn(unsigned long gva) -{ - unsigned long gpa = gva_to_gpa(gva); - return get_mfn_from_gpfn(gpa >> PAGE_SHIFT); -} extern void shadow_l3_normal_pt_update(struct domain *d, paddr_t pa, l3_pgentry_t l3e, @@ -1740,32 +1735,14 @@ static inline unsigned long gva_to_gpa(u return l1e_get_paddr(gpte) + (gva & ~PAGE_MASK); } +#endif + static inline unsigned long gva_to_mfn(unsigned long gva) { - l1_pgentry_t l1e; - - if (__copy_from_user(&l1e, &shadow_linear_pg_table[l1_linear_offset(gva)], - sizeof(l1e)) || - (l1e_get_flags(l1e) & (_PAGE_PRESENT | _PAGE_RW)) != - (_PAGE_PRESENT | _PAGE_RW) ) { - struct cpu_user_regs cur; - /* Error code -> write */ - cur.error_code = 3; - cur.cs = 0; /* Ring 0 -> hypervisor */ - cur.eflags = 0; - shadow_fault(gva, &cur); - if (__copy_from_user(&l1e, - &shadow_linear_pg_table[l1_linear_offset(gva)], - sizeof(l1e)) || - (l1e_get_flags(l1e) & (_PAGE_PRESENT | _PAGE_RW)) != - (_PAGE_PRESENT | _PAGE_RW) ) { - return 0; - } - } - return l1e_get_pfn(l1e); -} - -#endif + unsigned long gpa = gva_to_gpa(gva); + return get_mfn_from_gpfn(gpa >> PAGE_SHIFT); +} + /************************************************************************/ extern void __update_pagetables(struct vcpu *v);