MIPS: print MAAR configuration during boot
[linux-drm-fsl-dcu.git] / arch / mips / mm / init.c
index 074ac545902663b69e1319ad2f8efe18de77637c..023c164b9eb69f9b579cb71baae3a2d2646268ef 100644 (file)
@@ -291,6 +291,7 @@ unsigned __weak platform_maar_init(unsigned num_pairs)
 static void maar_init(void)
 {
        unsigned num_maars, used, i;
+       phys_addr_t lower, upper, attr;
 
        if (!cpu_has_maar)
                return;
@@ -313,6 +314,34 @@ static void maar_init(void)
                write_c0_maar(0);
                back_to_back_c0_hazard();
        }
+
+       pr_info("MAAR configuration:\n");
+       for (i = 0; i < num_maars; i += 2) {
+               write_c0_maari(i);
+               back_to_back_c0_hazard();
+               upper = read_c0_maar();
+
+               write_c0_maari(i + 1);
+               back_to_back_c0_hazard();
+               lower = read_c0_maar();
+
+               attr = lower & upper;
+               lower = (lower & MIPS_MAAR_ADDR) << 4;
+               upper = ((upper & MIPS_MAAR_ADDR) << 4) | 0xffff;
+
+               pr_info("  [%d]: ", i / 2);
+               if (!(attr & MIPS_MAAR_V)) {
+                       pr_cont("disabled\n");
+                       continue;
+               }
+
+               pr_cont("%pa-%pa", &lower, &upper);
+
+               if (attr & MIPS_MAAR_S)
+                       pr_cont(" speculate");
+
+               pr_cont("\n");
+       }
 }
 
 #ifndef CONFIG_NEED_MULTIPLE_NODES