From: Vineet Gupta Date: Sun, 19 May 2013 10:21:03 +0000 (+0530) Subject: ARC: [mm] Zero page optimization X-Git-Tag: next-20130527~95^2~2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=d6340a13c963ad4ea1fc687bcea0da1f9804fed3;p=karo-tx-linux.git ARC: [mm] Zero page optimization Signed-off-by: Vineet Gupta --- diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c index fe1c5a073afe..9d96b9ecb528 100644 --- a/arch/arc/mm/tlb.c +++ b/arch/arc/mm/tlb.c @@ -432,9 +432,14 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned, { unsigned long vaddr = vaddr_unaligned & PAGE_MASK; unsigned long paddr = pte_val(*ptep) & PAGE_MASK; + struct page *page = pfn_to_page(pte_pfn(*ptep)); create_tlb(vma, vaddr, ptep); + if (page == ZERO_PAGE(0)) { + return; + } + /* * Exec page : Independent of aliasing/page-color considerations, * since icache doesn't snoop dcache on ARC, any dirty @@ -446,7 +451,6 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned, */ if ((vma->vm_flags & VM_EXEC) || addr_not_cache_congruent(paddr, vaddr)) { - struct page *page = pfn_to_page(pte_pfn(*ptep)); int dirty = test_and_clear_bit(PG_arch_1, &page->flags); if (dirty) {