@@ -312,6 +312,7 @@ void register_page_bootmem_memmap(unsigned long section_nr,
#ifdef CONFIG_PPC_BOOK3S_64
static bool disable_radix = !IS_ENABLED(CONFIG_PPC_RADIX_MMU_DEFAULT);
+static bool disable_khrap = !IS_ENABLED(CONFIG_PPC_RADIX_KHRAP);
static int __init parse_disable_radix(char *p)
{
@@ -328,6 +329,18 @@ static int __init parse_disable_radix(char *p)
}
early_param("disable_radix", parse_disable_radix);
+static int __init parse_nosmap(char *p)
+{
+ /*
+ * nosmap is an existing option on x86 where it doesn't return -EINVAL
+ * if the parameter is set to something, so even though it's different
+ * to disable_radix, don't return an error for compatibility.
+ */
+ disable_khrap = true;
+ return 0;
+}
+early_param("nosmap", parse_nosmap);
+
/*
* If we're running under a hypervisor, we need to check the contents of
* /chosen/ibm,architecture-vec-5 to see if the hypervisor is willing to do
@@ -381,6 +394,8 @@ void __init mmu_early_init_devtree(void)
/* Disable radix mode based on kernel command line. */
if (disable_radix)
cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX;
+ if (disable_radix || disable_khrap)
+ cur_cpu_spec->mmu_features &= ~MMU_FTR_RADIX_KHRAP;
/*
* Check /chosen/ibm,architecture-vec-5 if running as a guest.
KHRAP is similar to SMAP on x86 platforms, so implement support for the same kernel parameter. Signed-off-by: Russell Currey <ruscur@russell.cc> --- arch/powerpc/mm/init_64.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)