Jan Beulich
2008-Feb-01 08:43 UTC
[Xen-devel] [PATCH] linux/x86: make xen_change_pte_range() compatible with CONFIG_HIGHPTE
Cannot use virt_to_machine() on a kmap()-ed address. As usual, written and tested on 2.6.24 and made apply to the 2.6.18 tree without further testing. Signed-off-by: Jan Beulich <jbeulich@novell.com> Index: head-2008-01-28/arch/i386/mm/hypervisor.c ==================================================================--- head-2008-01-28.orig/arch/i386/mm/hypervisor.c 2007-10-19 17:18:37.000000000 +0200 +++ head-2008-01-28/arch/i386/mm/hypervisor.c 2008-01-31 17:38:56.000000000 +0100 @@ -569,7 +569,9 @@ int xen_change_pte_range(struct mm_struc pte = pte_offset_map_lock(mm, pmd, addr, &ptl); do { if (pte_present(*pte)) { - u[i].ptr = virt_to_machine(pte) | MMU_PT_UPDATE_PRESERVE_AD; + u[i].ptr = (__pmd_val(*pmd) & PHYSICAL_PAGE_MASK) + | ((unsigned long)pte & ~PAGE_MASK) + | MMU_PT_UPDATE_PRESERVE_AD; u[i].val = __pte_val(pte_modify(*pte, newprot)); if (++i == MAX_BATCHED_FULL_PTES) { if ((rc = HYPERVISOR_mmu_update( _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Apparently Analagous Threads
- [RFC/PATCH PV_OPS X86_64 08/17] paravirt_ops - memory managment
- [RFC/PATCH PV_OPS X86_64 08/17] paravirt_ops - memory managment
- [PATCH] linux: Allow actually using CONFIG_XEN_BLKDEV_TAP=m
- [PATCH 0 of 4] mm+paravirt+xen: add pte read-modify-write abstraction
- [PATCH 0 of 4] mm+paravirt+xen: add pte read-modify-write abstraction