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 ---