memory.c (800d8c63b2e989c2e349632d1648119bf5862f01) | memory.c (e496cf3d782135c1cca0d154d4b924517ff58de0) |
---|---|
1/* 2 * linux/mm/memory.c 3 * 4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 5 */ 6 7/* 8 * demand-loading started 01.12.91 - seems it is high on the list of --- 2906 unchanged lines hidden (view full) --- 2915 if (pmd_trans_unstable(fe->pmd) || pmd_devmap(*fe->pmd)) 2916 return VM_FAULT_NOPAGE; 2917 2918 fe->pte = pte_offset_map_lock(vma->vm_mm, fe->pmd, fe->address, 2919 &fe->ptl); 2920 return 0; 2921} 2922 | 1/* 2 * linux/mm/memory.c 3 * 4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 5 */ 6 7/* 8 * demand-loading started 01.12.91 - seems it is high on the list of --- 2906 unchanged lines hidden (view full) --- 2915 if (pmd_trans_unstable(fe->pmd) || pmd_devmap(*fe->pmd)) 2916 return VM_FAULT_NOPAGE; 2917 2918 fe->pte = pte_offset_map_lock(vma->vm_mm, fe->pmd, fe->address, 2919 &fe->ptl); 2920 return 0; 2921} 2922 |
2923#ifdef CONFIG_TRANSPARENT_HUGEPAGE | 2923#ifdef CONFIG_TRANSPARENT_HUGE_PAGECACHE |
2924 2925#define HPAGE_CACHE_INDEX_MASK (HPAGE_PMD_NR - 1) 2926static inline bool transhuge_vma_suitable(struct vm_area_struct *vma, 2927 unsigned long haddr) 2928{ 2929 if (((vma->vm_start >> PAGE_SHIFT) & HPAGE_CACHE_INDEX_MASK) != 2930 (vma->vm_pgoff & HPAGE_CACHE_INDEX_MASK)) 2931 return false; --- 65 unchanged lines hidden (view full) --- 2997int alloc_set_pte(struct fault_env *fe, struct mem_cgroup *memcg, 2998 struct page *page) 2999{ 3000 struct vm_area_struct *vma = fe->vma; 3001 bool write = fe->flags & FAULT_FLAG_WRITE; 3002 pte_t entry; 3003 int ret; 3004 | 2924 2925#define HPAGE_CACHE_INDEX_MASK (HPAGE_PMD_NR - 1) 2926static inline bool transhuge_vma_suitable(struct vm_area_struct *vma, 2927 unsigned long haddr) 2928{ 2929 if (((vma->vm_start >> PAGE_SHIFT) & HPAGE_CACHE_INDEX_MASK) != 2930 (vma->vm_pgoff & HPAGE_CACHE_INDEX_MASK)) 2931 return false; --- 65 unchanged lines hidden (view full) --- 2997int alloc_set_pte(struct fault_env *fe, struct mem_cgroup *memcg, 2998 struct page *page) 2999{ 3000 struct vm_area_struct *vma = fe->vma; 3001 bool write = fe->flags & FAULT_FLAG_WRITE; 3002 pte_t entry; 3003 int ret; 3004 |
3005 if (pmd_none(*fe->pmd) && PageTransCompound(page)) { | 3005 if (pmd_none(*fe->pmd) && PageTransCompound(page) && 3006 IS_ENABLED(CONFIG_TRANSPARENT_HUGE_PAGECACHE)) { |
3006 /* THP on COW? */ 3007 VM_BUG_ON_PAGE(memcg, page); 3008 3009 ret = do_set_pmd(fe, page); 3010 if (ret != VM_FAULT_FALLBACK) 3011 return ret; 3012 } 3013 --- 1085 unchanged lines hidden --- | 3007 /* THP on COW? */ 3008 VM_BUG_ON_PAGE(memcg, page); 3009 3010 ret = do_set_pmd(fe, page); 3011 if (ret != VM_FAULT_FALLBACK) 3012 return ret; 3013 } 3014 --- 1085 unchanged lines hidden --- |