[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [patch] pin/unpin must flush tlb
Hi, Patch below is needed to make my system work stable in PAE mode. Havn't seen problems without PAE, not sure whenever thats just pure luck or whenever there is a bug in my PAE xenlinux kernel. To me it looks like a generic bug though. I've actually trapped into problems with unpin only: A process exits, somewhere in exit_mm() the page tables are unpinned, shortly thereafter the mappings are cleared. While doing so the kernel oopses in zap_pte_range(), on page table write access. Probably due to some stale tlb entry where the page is still tagged read-only. cheers, Gerd Index: linux-2.6.11/arch/xen/i386/mm/pgtable.c =================================================================== --- linux-2.6.11.orig/arch/xen/i386/mm/pgtable.c 2005-06-22 16:25:17.000000000 +0200 +++ linux-2.6.11/arch/xen/i386/mm/pgtable.c 2005-06-23 18:20:45.000000000 +0200 @@ -486,7 +486,8 @@ void mm_pin(struct mm_struct *mm) mm_walk(mm, PAGE_KERNEL_RO); HYPERVISOR_update_va_mapping( (unsigned long)mm->pgd, - pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL_RO), 0); + pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL_RO), + UVMF_TLB_FLUSH); xen_pgd_pin(__pa(mm->pgd)); mm->context.pinned = 1; spin_lock(&mm_unpinned_lock); @@ -505,6 +506,7 @@ void mm_unpin(struct mm_struct *mm) (unsigned long)mm->pgd, pfn_pte(virt_to_phys(mm->pgd)>>PAGE_SHIFT, PAGE_KERNEL), 0); mm_walk(mm, PAGE_KERNEL); + xen_tlb_flush(); mm->context.pinned = 0; spin_lock(&mm_unpinned_lock); list_add(&mm->context.unpinned, &mm_unpinned); _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |