Skip to content

Commit d7e02f7

Browse files
kvaneeshmpe
authored andcommitted
powerpc/book3s/mm: Update Oops message to print the correct translation in use
Avoids confusion when printing Oops message like below Faulting instruction address: 0xc00000000008bdb4 Oops: Kernel access of bad area, sig: 11 [#1] LE PAGE_SIZE=64K MMU=Radix MMU=Hash SMP NR_CPUS=2048 NUMA PowerNV This was because we never clear the MMU_FTR_HPTE_TABLE feature flag even if we run with radix translation. It was discussed that we should look at this feature flag as an indication of the capability to run hash translation and we should not clear the flag even if we run in radix translation. All the code paths check for radix_enabled() check and if found true consider we are running with radix translation. Follow the same sequence for finding the MMU translation string to be used in Oops message. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Acked-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20190711145814.17970-1-aneesh.kumar@linux.ibm.com
1 parent 35a5c32 commit d7e02f7

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

arch/powerpc/kernel/traps.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,15 +250,22 @@ static void oops_end(unsigned long flags, struct pt_regs *regs,
250250
}
251251
NOKPROBE_SYMBOL(oops_end);
252252

253+
static char *get_mmu_str(void)
254+
{
255+
if (early_radix_enabled())
256+
return " MMU=Radix";
257+
if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE))
258+
return " MMU=Hash";
259+
return "";
260+
}
261+
253262
static int __die(const char *str, struct pt_regs *regs, long err)
254263
{
255264
printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
256265

257-
printk("%s PAGE_SIZE=%luK%s%s%s%s%s%s%s %s\n",
266+
printk("%s PAGE_SIZE=%luK%s%s%s%s%s%s %s\n",
258267
IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
259-
PAGE_SIZE / 1024,
260-
early_radix_enabled() ? " MMU=Radix" : "",
261-
early_mmu_has_feature(MMU_FTR_HPTE_TABLE) ? " MMU=Hash" : "",
268+
PAGE_SIZE / 1024, get_mmu_str(),
262269
IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
263270
IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
264271
IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",

0 commit comments

Comments
 (0)