]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branches 'fixes', 'misc' and 'pgt' into for-next
authorRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 9 Aug 2011 07:45:19 +0000 (08:45 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 9 Aug 2011 07:45:19 +0000 (08:45 +0100)
1  2  3 
arch/arm/include/asm/pgalloc.h
arch/arm/include/asm/tlb.h

Simple merge
index 265f908c4a6e79b98e07d43b7614c5164e86da53,265f908c4a6e79b98e07d43b7614c5164e86da53,a116bef20cbe47b12fb78492076fa4408a6b2cc8..b509e441e0ad4b71915ceeedc6ee256daed458f3
@@@@ -172,38 -172,38 -97,14 +172,39 @@@@ tlb_start_vma(struct mmu_gather *tlb, s
   static inline void
   tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
   {
  -     if (!tlb->fullmm && tlb->range_end > 0)
  -             flush_tlb_range(vma, tlb->range_start, tlb->range_end);
  +     if (!tlb->fullmm)
  +             tlb_flush(tlb);
  +}
  +
  +static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page)
  +{
  +     if (tlb_fast_mode(tlb)) {
  +             free_page_and_swap_cache(page);
  +             return 1; /* avoid calling tlb_flush_mmu */
  +     }
  +
  +     tlb->pages[tlb->nr++] = page;
  +     VM_BUG_ON(tlb->nr > tlb->max);
  +     return tlb->max - tlb->nr;
  +}
  +
  +static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
  +{
  +     if (!__tlb_remove_page(tlb, page))
  +             tlb_flush_mmu(tlb);
  +}
  +
  +static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
  +     unsigned long addr)
  +{
  +     pgtable_page_dtor(pte);
  +     tlb_add_flush(tlb, addr);
  +     tlb_remove_page(tlb, pte);
   }
   
  -#define tlb_remove_page(tlb,page)    free_page_and_swap_cache(page)
  -#define pte_free_tlb(tlb, ptep, addr)        pte_free((tlb)->mm, ptep)
  +#define pte_free_tlb(tlb, ptep, addr)        __pte_free_tlb(tlb, ptep, addr)
   #define pmd_free_tlb(tlb, pmdp, addr)        pmd_free((tlb)->mm, pmdp)
++ #define pud_free_tlb(tlb, pudp, addr)        pud_free((tlb)->mm, pudp)
   
   #define tlb_migrate_finish(mm)               do { } while (0)