diff options
| -rw-r--r-- | arch/powerpc/mm/pgtable-radix.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c index 39c252b54d16..cfbbee941a76 100644 --- a/arch/powerpc/mm/pgtable-radix.c +++ b/arch/powerpc/mm/pgtable-radix.c @@ -169,6 +169,16 @@ void radix__mark_rodata_ro(void)  {  	unsigned long start, end; +	/* +	 * mark_rodata_ro() will mark itself as !writable at some point. +	 * Due to DD1 workaround in radix__pte_update(), we'll end up with +	 * an invalid pte and the system will crash quite severly. +	 */ +	if (cpu_has_feature(CPU_FTR_POWER9_DD1)) { +		pr_warn("Warning: Unable to mark rodata read only on P9 DD1\n"); +		return; +	} +  	start = (unsigned long)_stext;  	end = (unsigned long)__init_begin;  | 
