OSDN Git Service

powerpc/powernv: Print helpful message when cores guarded
authorJoel Stanley <joel@jms.id.au>
Thu, 1 Aug 2019 05:16:30 +0000 (14:46 +0930)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 8 Sep 2020 12:57:11 +0000 (22:57 +1000)
Often the firmware will guard out cores after a crash. This often
undesirable, and is not immediately noticeable.

This adds an informative message when a CPU device tree nodes are
marked bad in the device tree.

Signed-off-by: Joel Stanley <joel@jms.id.au>
[mpe: Use an eye-catcher that's less likely to get us in trouble]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190801051630.5804-1-joel@jms.id.au
arch/powerpc/platforms/powernv/setup.c

index 7fcb886..9acaa0f 100644 (file)
@@ -130,6 +130,28 @@ static void pnv_setup_rfi_flush(void)
        setup_count_cache_flush();
 }
 
+static void __init pnv_check_guarded_cores(void)
+{
+       struct device_node *dn;
+       int bad_count = 0;
+
+       for_each_node_by_type(dn, "cpu") {
+               if (of_property_match_string(dn, "status", "bad") >= 0)
+                       bad_count++;
+       };
+
+       if (bad_count) {
+               printk("  _     _______________\n");
+               pr_cont(" | |   /               \\\n");
+               pr_cont(" | |   |    WARNING!   |\n");
+               pr_cont(" | |   |               |\n");
+               pr_cont(" | |   | It looks like |\n");
+               pr_cont(" |_|   |  you have %*d |\n", 3, bad_count);
+               pr_cont("  _    | guarded cores |\n");
+               pr_cont(" (_)   \\_______________/\n");
+       }
+}
+
 static void __init pnv_setup_arch(void)
 {
        set_arch_panic_timeout(10, ARCH_PANIC_TIMEOUT);
@@ -150,6 +172,8 @@ static void __init pnv_setup_arch(void)
        /* Enable NAP mode */
        powersave_nap = 1;
 
+       pnv_check_guarded_cores();
+
        /* XXX PMCS */
 }