Messages in this thread Patch in this message | | | Date | Mon, 07 Mar 2011 18:13:55 +0100 | From | Peter Zijlstra <> | Subject | [RFC][PATCH 05/15] mm, tile: Change flush_tlb_range() VM_HUGETLB semantics |
| |
Since we're going to provide a fake VMA covering a large range, we need to change the VM_HUGETLB semantic to mean _also_ wipe HPAGE TLBs.
Cc: Chris Metcalf <cmetcalf@tilera.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- arch/tile/kernel/tlb.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
Index: linux-2.6/arch/tile/kernel/tlb.c =================================================================== --- linux-2.6.orig/arch/tile/kernel/tlb.c +++ linux-2.6/arch/tile/kernel/tlb.c @@ -67,11 +67,14 @@ EXPORT_SYMBOL(flush_tlb_page); void flush_tlb_range(const struct vm_area_struct *vma, unsigned long start, unsigned long end) { - unsigned long size = hv_page_size(vma); struct mm_struct *mm = vma->vm_mm; int cache = (vma->vm_flags & VM_EXEC) ? HV_FLUSH_EVICT_L1I : 0; - flush_remote(0, cache, &mm->cpu_vm_mask, start, end - start, size, - &mm->cpu_vm_mask, NULL, 0); + flush_remote(0, cache, &mm->cpu_vm_mask, start, end - start, + PAGE_SIZE, &mm->cpu_vm_mask, NULL, 0); + if (vma->vm_flags & VM_HUGETLB) { + flush_remote(0, 0, &mm->cpu_vm_mask, start, end - start, + HPAGE_SIZE, &mm->cpu_vm_mask, NULL, 0); + } } void flush_tlb_all(void)
| |