Skip to content

Commit

Permalink
ARM: 7792/1: mm: Remove general hugetlb code from ARM
Browse files Browse the repository at this point in the history
General forms of huge_pte_alloc, huge_pte_offset and follow_huge_pmd
are now available in mm/hugetlb.c.

This patch removes the ARM copies of these functions and activates
the general ones by enabling:
CONFIG_ARCH_WANT_GENERAL_HUGETLB

Signed-off-by: Steve Capper <steve.capper@linaro.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Steven Capper authored and Russell King committed Jul 31, 2013
1 parent c9218b1 commit 4bfab20
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 43 deletions.
3 changes: 3 additions & 0 deletions arch/arm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1793,6 +1793,9 @@ config HAVE_ARCH_TRANSPARENT_HUGEPAGE
def_bool y
depends on ARM_LPAE

config ARCH_WANT_GENERAL_HUGETLB
def_bool y

source "mm/Kconfig"

config FORCE_MAX_ZONEORDER
Expand Down
43 changes: 0 additions & 43 deletions arch/arm/mm/hugetlbpage.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,6 @@
* of type casting from pmd_t * to pte_t *.
*/

pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
{
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd = NULL;

pgd = pgd_offset(mm, addr);
if (pgd_present(*pgd)) {
pud = pud_offset(pgd, addr);
if (pud_present(*pud))
pmd = pmd_offset(pud, addr);
}

return (pte_t *)pmd;
}

struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
int write)
{
Expand All @@ -68,33 +52,6 @@ int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
return 0;
}

pte_t *huge_pte_alloc(struct mm_struct *mm,
unsigned long addr, unsigned long sz)
{
pgd_t *pgd;
pud_t *pud;
pte_t *pte = NULL;

pgd = pgd_offset(mm, addr);
pud = pud_alloc(mm, pgd, addr);
if (pud)
pte = (pte_t *)pmd_alloc(mm, pud, addr);

return pte;
}

struct page *
follow_huge_pmd(struct mm_struct *mm, unsigned long address,
pmd_t *pmd, int write)
{
struct page *page;

page = pte_page(*(pte_t *)pmd);
if (page)
page += ((address & ~PMD_MASK) >> PAGE_SHIFT);
return page;
}

int pmd_huge(pmd_t pmd)
{
return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
Expand Down

0 comments on commit 4bfab20

Please sign in to comment.