+++ /dev/null
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _4LEVEL_FIXUP_H
-#define _4LEVEL_FIXUP_H
-
-#define __ARCH_HAS_4LEVEL_HACK
-#define __PAGETABLE_PUD_FOLDED 1
-
-#define PUD_SHIFT                      PGDIR_SHIFT
-#define PUD_SIZE                       PGDIR_SIZE
-#define PUD_MASK                       PGDIR_MASK
-#define PTRS_PER_PUD                   1
-
-#define pud_t                          pgd_t
-
-#define pmd_alloc(mm, pud, address) \
-       ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))? \
-               NULL: pmd_offset(pud, address))
-
-#define pud_offset(pgd, start)         (pgd)
-#define pud_none(pud)                  0
-#define pud_bad(pud)                   0
-#define pud_present(pud)               1
-#define pud_ERROR(pud)                 do { } while (0)
-#define pud_clear(pud)                 pgd_clear(pud)
-#define pud_val(pud)                   pgd_val(pud)
-#define pud_populate(mm, pud, pmd)     pgd_populate(mm, pud, pmd)
-#define pud_page(pud)                  pgd_page(pud)
-#define pud_page_vaddr(pud)            pgd_page_vaddr(pud)
-
-#undef pud_free_tlb
-#define pud_free_tlb(tlb, x, addr)     do { } while (0)
-#define pud_free(mm, x)                        do { } while (0)
-
-#undef  pud_addr_end
-#define pud_addr_end(addr, end)                (end)
-
-#include <asm-generic/5level-fixup.h>
-
-#endif
 
 int __pte_alloc(struct mm_struct *mm, pmd_t *pmd);
 int __pte_alloc_kernel(pmd_t *pmd);
 
+#if defined(CONFIG_MMU)
+
 /*
- * The following ifdef needed to get the 4level-fixup.h header to work.
- * Remove it when 4level-fixup.h has been removed.
+ * The following ifdef needed to get the 5level-fixup.h header to work.
+ * Remove it when 5level-fixup.h has been removed.
  */
-#if defined(CONFIG_MMU) && !defined(__ARCH_HAS_4LEVEL_HACK)
-
 #ifndef __ARCH_HAS_5LEVEL_HACK
 static inline p4d_t *p4d_alloc(struct mm_struct *mm, pgd_t *pgd,
                unsigned long address)
        return (unlikely(pud_none(*pud)) && __pmd_alloc(mm, pud, address))?
                NULL: pmd_offset(pud, address);
 }
-#endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
+#endif /* CONFIG_MMU */
 
 #if USE_SPLIT_PTE_PTLOCKS
 #if ALLOC_SPLIT_PTLOCKS
 
        smp_wmb(); /* See comment in __pte_alloc */
 
        ptl = pud_lock(mm, pud);
-#ifndef __ARCH_HAS_4LEVEL_HACK
        if (!pud_present(*pud)) {
                mm_inc_nr_pmds(mm);
                pud_populate(mm, pud, new);
        } else  /* Another has populated it */
                pmd_free(mm, new);
-#else
-       if (!pgd_present(*pud)) {
-               mm_inc_nr_pmds(mm);
-               pgd_populate(mm, pud, new);
-       } else /* Another has populated it */
-               pmd_free(mm, new);
-#endif /* __ARCH_HAS_4LEVEL_HACK */
        spin_unlock(ptl);
        return 0;
 }