mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
bitkeeper revision 1.1748.1.1 (42bbd1c5CE48yPys_hWh-39fCz3QGw)
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.
This commit is contained in:
1 parent
c8cf49e882
commit
b8cb514f93
1 file changed
+3
-1
@@ -461,7 +461,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);
|
||||
@@ -480,6 +481,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);
|
||||
|
||||