static unsigned long __initdata prom_tce_alloc_end;
 #endif
 
-static bool __initdata prom_radix_disable;
+static bool prom_radix_disable __initdata = !IS_ENABLED(CONFIG_PPC_RADIX_MMU_DEFAULT);
 
 struct platform_support {
        bool hash_mmu;
 
        opt = strstr(prom_cmd_line, "disable_radix");
        if (opt) {
-               prom_debug("Radix disabled from cmdline\n");
-               prom_radix_disable = true;
+               opt += 13;
+               if (*opt && *opt == '=') {
+                       bool val;
+
+                       if (kstrtobool(++opt, &val))
+                               prom_radix_disable = false;
+                       else
+                               prom_radix_disable = val;
+               } else
+                       prom_radix_disable = true;
        }
+       if (prom_radix_disable)
+               prom_debug("Radix disabled from cmdline\n");
 }
 
 #if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
 
 WHITELIST="add_reloc_offset __bss_start __bss_stop copy_and_flush
 _end enter_prom memcpy memset reloc_offset __secondary_hold
 __secondary_hold_acknowledge __secondary_hold_spinloop __start
-strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224
+strcmp strcpy strlcpy strlen strncmp strstr kstrtobool logo_linux_clut224
 reloc_got2 kernstart_addr memstart_addr linux_banner _stext
 __prom_init_toc_start __prom_init_toc_end btext_setup_display TOC."