ARM: 7792/1: mm: Remove general hugetlb code from ARM
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>
This commit is contained in:
parent
c9218b1639
commit
4bfab2034b
@ -1793,6 +1793,9 @@ config HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
|||||||
def_bool y
|
def_bool y
|
||||||
depends on ARM_LPAE
|
depends on ARM_LPAE
|
||||||
|
|
||||||
|
config ARCH_WANT_GENERAL_HUGETLB
|
||||||
|
def_bool y
|
||||||
|
|
||||||
source "mm/Kconfig"
|
source "mm/Kconfig"
|
||||||
|
|
||||||
config FORCE_MAX_ZONEORDER
|
config FORCE_MAX_ZONEORDER
|
||||||
|
@ -36,22 +36,6 @@
|
|||||||
* of type casting from pmd_t * to pte_t *.
|
* 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,
|
struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
|
||||||
int write)
|
int write)
|
||||||
{
|
{
|
||||||
@ -68,33 +52,6 @@ int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
|
|||||||
return 0;
|
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)
|
int pmd_huge(pmd_t pmd)
|
||||||
{
|
{
|
||||||
return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
|
return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user