pgtable-generic.c (8c57a5e7b2820f349c95b8c8393fec1e0f4070d2) pgtable-generic.c (a00cc7d9dd93d66a3fb83fc52aa57a4bec51c517)
1/*
2 * mm/pgtable-generic.c
3 *
4 * Generic pgtable methods declared in asm-generic/pgtable.h
5 *
6 * Copyright (C) 2010 Linus Torvalds
7 */
8

--- 109 unchanged lines hidden (view full) ---

118{
119 pmd_t pmd;
120 VM_BUG_ON(address & ~HPAGE_PMD_MASK);
121 VM_BUG_ON(!pmd_trans_huge(*pmdp) && !pmd_devmap(*pmdp));
122 pmd = pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp);
123 flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
124 return pmd;
125}
1/*
2 * mm/pgtable-generic.c
3 *
4 * Generic pgtable methods declared in asm-generic/pgtable.h
5 *
6 * Copyright (C) 2010 Linus Torvalds
7 */
8

--- 109 unchanged lines hidden (view full) ---

118{
119 pmd_t pmd;
120 VM_BUG_ON(address & ~HPAGE_PMD_MASK);
121 VM_BUG_ON(!pmd_trans_huge(*pmdp) && !pmd_devmap(*pmdp));
122 pmd = pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp);
123 flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
124 return pmd;
125}
126
127#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
128pud_t pudp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address,
129 pud_t *pudp)
130{
131 pud_t pud;
132
133 VM_BUG_ON(address & ~HPAGE_PUD_MASK);
134 VM_BUG_ON(!pud_trans_huge(*pudp) && !pud_devmap(*pudp));
135 pud = pudp_huge_get_and_clear(vma->vm_mm, address, pudp);
136 flush_pud_tlb_range(vma, address, address + HPAGE_PUD_SIZE);
137 return pud;
138}
126#endif
139#endif
140#endif
127
128#ifndef __HAVE_ARCH_PGTABLE_DEPOSIT
129void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
130 pgtable_t pgtable)
131{
132 assert_spin_locked(pmd_lockptr(mm, pmdp));
133
134 /* FIFO */

--- 56 unchanged lines hidden ---
141
142#ifndef __HAVE_ARCH_PGTABLE_DEPOSIT
143void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
144 pgtable_t pgtable)
145{
146 assert_spin_locked(pmd_lockptr(mm, pmdp));
147
148 /* FIFO */

--- 56 unchanged lines hidden ---