}
 #endif
 
+#define arch_supports_page_table_move arch_supports_page_table_move
+static inline bool arch_supports_page_table_move(void)
+{
+       return radix_enabled();
+}
+
 #endif /* __KERNEL__ */
 #endif /* __ASM_POWERPC_TLB_H */
 
 #include <linux/userfaultfd_k.h>
 
 #include <asm/cacheflush.h>
-#include <asm/tlbflush.h>
+#include <asm/tlb.h>
 #include <asm/pgalloc.h>
 
 #include "internal.h"
                drop_rmap_locks(vma);
 }
 
+#ifndef arch_supports_page_table_move
+#define arch_supports_page_table_move arch_supports_page_table_move
+static inline bool arch_supports_page_table_move(void)
+{
+       return IS_ENABLED(CONFIG_HAVE_MOVE_PMD) ||
+               IS_ENABLED(CONFIG_HAVE_MOVE_PUD);
+}
+#endif
+
 #ifdef CONFIG_HAVE_MOVE_PMD
 static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr,
                  unsigned long new_addr, pmd_t *old_pmd, pmd_t *new_pmd)
        struct mm_struct *mm = vma->vm_mm;
        pmd_t pmd;
 
+       if (!arch_supports_page_table_move())
+               return false;
        /*
         * The destination pmd shouldn't be established, free_pgtables()
         * should have released it.
        struct mm_struct *mm = vma->vm_mm;
        pud_t pud;
 
+       if (!arch_supports_page_table_move())
+               return false;
        /*
         * The destination pud shouldn't be established, free_pgtables()
         * should have released it.