Messages in this thread Patch in this message | | | From | James Custer <> | Subject | [PATCH] x86: Allow 1GB pages to be SPECIAL similar to 2MB | Date | Wed, 24 Sep 2014 12:19:03 -0500 |
| |
Signed-off-by: James Custer <jcuster@sgi.com> --- arch/x86/mm/gup.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c index dd74e46..12ca9cf 100644 --- a/arch/x86/mm/gup.c +++ b/arch/x86/mm/gup.c @@ -121,7 +121,6 @@ static noinline int gup_huge_pmd(pmd_t pmd, unsigned long addr, mask |= _PAGE_RW; if ((pte_flags(pte) & mask) != mask) return 0; - /* hugepages are never "special" */ VM_BUG_ON(pte_flags(pte) & _PAGE_SPECIAL); VM_BUG_ON(!pfn_valid(pte_pfn(pte))); @@ -191,7 +190,6 @@ static noinline int gup_huge_pud(pud_t pud, unsigned long addr, mask |= _PAGE_RW; if ((pte_flags(pte) & mask) != mask) return 0; - /* hugepages are never "special" */ VM_BUG_ON(pte_flags(pte) & _PAGE_SPECIAL); VM_BUG_ON(!pfn_valid(pte_pfn(pte))); @@ -223,7 +221,7 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end, pud_t pud = *pudp; next = pud_addr_end(addr, end); - if (pud_none(pud)) + if (pud_none(pud) || (pud_val(pud) & _PAGE_SPECIAL)) return 0; if (unlikely(pud_large(pud))) { if (!gup_huge_pud(pud, addr, next, write, pages, nr)) -- 1.8.2.1
| |