mm: remove __ARCH_HAS_5LEVEL_HACK and include/asm-generic/5level-fixup.h
There are no architectures that use include/asm-generic/5level-fixup.h therefore it can be removed along with __ARCH_HAS_5LEVEL_HACK define and the code it surrounds Signed-off-by: Mike Rapoport <rppt@linux.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Brian Cain <bcain@codeaurora.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Christophe Leroy <christophe.leroy@c-s.fr> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Geert Uytterhoeven <geert+renesas@glider.be> Cc: Guan Xuetao <gxt@pku.edu.cn> Cc: James Morse <james.morse@arm.com> Cc: Jonas Bonn <jonas@southpole.se> Cc: Julien Thierry <julien.thierry.kdev@gmail.com> Cc: Ley Foon Tan <ley.foon.tan@intel.com> Cc: Marc Zyngier <maz@kernel.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Mackerras <paulus@samba.org> Cc: Rich Felker <dalias@libc.org> Cc: Russell King <linux@armlinux.org.uk> Cc: Stafford Horne <shorne@gmail.com> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> Cc: Suzuki K Poulose <suzuki.poulose@arm.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Will Deacon <will@kernel.org> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Link: http://lkml.kernel.org/r/20200414153455.21744-15-rppt@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ee7767430e
commit
f089dcc742
|
@ -1,59 +0,0 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _5LEVEL_FIXUP_H
|
||||
#define _5LEVEL_FIXUP_H
|
||||
|
||||
#define __ARCH_HAS_5LEVEL_HACK
|
||||
#define __PAGETABLE_P4D_FOLDED 1
|
||||
|
||||
#define P4D_SHIFT PGDIR_SHIFT
|
||||
#define P4D_SIZE PGDIR_SIZE
|
||||
#define P4D_MASK PGDIR_MASK
|
||||
#define MAX_PTRS_PER_P4D 1
|
||||
#define PTRS_PER_P4D 1
|
||||
|
||||
#define p4d_t pgd_t
|
||||
|
||||
#define pud_alloc(mm, p4d, address) \
|
||||
((unlikely(pgd_none(*(p4d))) && __pud_alloc(mm, p4d, address)) ? \
|
||||
NULL : pud_offset(p4d, address))
|
||||
|
||||
#define p4d_alloc(mm, pgd, address) (pgd)
|
||||
#define p4d_alloc_track(mm, pgd, address, mask) (pgd)
|
||||
#define p4d_offset(pgd, start) (pgd)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
static inline int p4d_none(p4d_t p4d)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int p4d_bad(p4d_t p4d)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int p4d_present(p4d_t p4d)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define p4d_ERROR(p4d) do { } while (0)
|
||||
#define p4d_clear(p4d) pgd_clear(p4d)
|
||||
#define p4d_val(p4d) pgd_val(p4d)
|
||||
#define p4d_populate(mm, p4d, pud) pgd_populate(mm, p4d, pud)
|
||||
#define p4d_populate_safe(mm, p4d, pud) pgd_populate(mm, p4d, pud)
|
||||
#define p4d_page(p4d) pgd_page(p4d)
|
||||
#define p4d_page_vaddr(p4d) pgd_page_vaddr(p4d)
|
||||
|
||||
#define __p4d(x) __pgd(x)
|
||||
#define set_p4d(p4dp, p4d) set_pgd(p4dp, p4d)
|
||||
|
||||
#undef p4d_free_tlb
|
||||
#define p4d_free_tlb(tlb, x, addr) do { } while (0)
|
||||
#define p4d_free(mm, x) do { } while (0)
|
||||
|
||||
#undef p4d_addr_end
|
||||
#define p4d_addr_end(addr, end) (end)
|
||||
|
||||
#endif
|
|
@ -2069,11 +2069,6 @@ int __pte_alloc_kernel(pmd_t *pmd);
|
|||
|
||||
#if defined(CONFIG_MMU)
|
||||
|
||||
/*
|
||||
* The following ifdef needed to get the 5level-fixup.h header to work.
|
||||
* Remove it when 5level-fixup.h has been removed.
|
||||
*/
|
||||
#ifndef __ARCH_HAS_5LEVEL_HACK
|
||||
static inline p4d_t *p4d_alloc(struct mm_struct *mm, pgd_t *pgd,
|
||||
unsigned long address)
|
||||
{
|
||||
|
@ -2102,8 +2097,6 @@ static inline p4d_t *p4d_alloc_track(struct mm_struct *mm, pgd_t *pgd,
|
|||
return p4d_offset(pgd, address);
|
||||
}
|
||||
|
||||
#endif /* !__ARCH_HAS_5LEVEL_HACK */
|
||||
|
||||
static inline pud_t *pud_alloc_track(struct mm_struct *mm, p4d_t *p4d,
|
||||
unsigned long address,
|
||||
pgtbl_mod_mask *mod_mask)
|
||||
|
|
|
@ -250,20 +250,9 @@ int __ref kasan_populate_early_shadow(const void *shadow_start,
|
|||
* 3,2 - level page tables where we don't have
|
||||
* puds,pmds, so pgd_populate(), pud_populate()
|
||||
* is noops.
|
||||
*
|
||||
* The ifndef is required to avoid build breakage.
|
||||
*
|
||||
* With 5level-fixup.h, pgd_populate() is not nop and
|
||||
* we reference kasan_early_shadow_p4d. It's not defined
|
||||
* unless 5-level paging enabled.
|
||||
*
|
||||
* The ifndef can be dropped once all KASAN-enabled
|
||||
* architectures will switch to pgtable-nop4d.h.
|
||||
*/
|
||||
#ifndef __ARCH_HAS_5LEVEL_HACK
|
||||
pgd_populate(&init_mm, pgd,
|
||||
lm_alias(kasan_early_shadow_p4d));
|
||||
#endif
|
||||
p4d = p4d_offset(pgd, addr);
|
||||
p4d_populate(&init_mm, p4d,
|
||||
lm_alias(kasan_early_shadow_pud));
|
||||
|
|
|
@ -4436,19 +4436,11 @@ int __pud_alloc(struct mm_struct *mm, p4d_t *p4d, unsigned long address)
|
|||
smp_wmb(); /* See comment in __pte_alloc */
|
||||
|
||||
spin_lock(&mm->page_table_lock);
|
||||
#ifndef __ARCH_HAS_5LEVEL_HACK
|
||||
if (!p4d_present(*p4d)) {
|
||||
mm_inc_nr_puds(mm);
|
||||
p4d_populate(mm, p4d, new);
|
||||
} else /* Another has populated it */
|
||||
pud_free(mm, new);
|
||||
#else
|
||||
if (!pgd_present(*p4d)) {
|
||||
mm_inc_nr_puds(mm);
|
||||
pgd_populate(mm, p4d, new);
|
||||
} else /* Another has populated it */
|
||||
pud_free(mm, new);
|
||||
#endif /* __ARCH_HAS_5LEVEL_HACK */
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue