mm: remove __ARCH_HAS_5LEVEL_HACK and include/asm-generic/5level-fixup.h
authorMike Rapoport <rppt@linux.ibm.com>
Thu, 4 Jun 2020 23:47:08 +0000 (16:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Jun 2020 02:06:21 +0000 (19:06 -0700)
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>
include/asm-generic/5level-fixup.h [deleted file]
include/linux/mm.h
mm/kasan/init.c
mm/memory.c

diff --git a/include/asm-generic/5level-fixup.h b/include/asm-generic/5level-fixup.h
deleted file mode 100644 (file)
index 58046dd..0000000
+++ /dev/null
@@ -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
index 66e0977..e220ce5 100644 (file)
@@ -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)
index ce45c49..fe6be0b 100644 (file)
@@ -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));
index 7b70398..60c2792 100644 (file)
@@ -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;
 }