• KOSAKI Motohiro's avatar
    hugepage: support ZERO_PAGE() · 4b2e38ad
    KOSAKI Motohiro authored
    Presently hugepage doesn't use zero page at all because zero page is only
    used for coredumping and hugepage can't core dump.
    
    However we have now implemented hugepage coredumping.  Therefore we should
    implement the zero page of hugepage.
    
    Implementation note:
    
    o Why do we only check VM_SHARED for zero page?
      normal page checked as ..
    
    	static inline int use_zero_page(struct vm_area_struct *vma)
    	{
    	        if (vma->vm_flags & (VM_LOCKED | VM_SHARED))
    	                return 0;
    
    	        return !vma->vm_ops || !vma->vm_ops->fault;
    	}
    
    First, hugepages are never mlock()ed.  We aren't concerned with VM_LOCKED.
    
    Second, hugetlbfs is a pseudo filesystem, not a real filesystem and it
    doesn't have any file backing.  Thus ops->fault checking is meaningless.
    
    o Why don't we use zero page if !pte.
    
    !pte indicate {pud, pmd} doesn't exist or some error happened.  So we
    shouldn't return zero page if any error occurred.
    Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Adam Litke <agl@us.ibm.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Cc: Kawai Hidehiro <hidehiro.kawai.ez@hitachi.com>
    Cc: Mel Gorman <mel@skynet.ie>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4b2e38ad
hugetlb.c 58.1 KB