MIPS: Print segment physical address when EU=1
authorJames Hogan <james.hogan@imgtec.com>
Wed, 27 Jul 2016 15:07:54 +0000 (16:07 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 28 Jul 2016 09:44:30 +0000 (11:44 +0200)
Currently the debugfs interface to print the segment configuration
refuses to print the physical address of mapped segments. However if the
EU bit is set these become unmapped at error level (when
CP0_Status.ERL=1), so the physical address is still relevant.

Update the logic to print the physical address of mapped segments when
the EU bit is set, while still hiding the Cache Coherency Attribute
(since EU overrides that to uncached when ERL=1 too).

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/13833/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/segment.c

index 87bc74a5a518c5fca349104a6257a2ea6242710c..2703f218202e167ffda5b1ff0ac7f2a41ca8df7c 100644 (file)
@@ -26,17 +26,20 @@ static void build_segment_config(char *str, unsigned int cfg)
 
        /*
         * Access modes MK, MSK and MUSK are mapped segments. Therefore
-        * there is no direct physical address mapping.
+        * there is no direct physical address mapping unless it becomes
+        * unmapped uncached at error level due to EU.
         */
-       if ((am == 0) || (am > 3)) {
+       if ((am == 0) || (am > 3) || (cfg & MIPS_SEGCFG_EU))
                str += sprintf(str, "         %03lx",
                        ((cfg & MIPS_SEGCFG_PA) >> MIPS_SEGCFG_PA_SHIFT));
+       else
+               str += sprintf(str, "         UND");
+
+       if ((am == 0) || (am > 3))
                str += sprintf(str, "         %01ld",
                        ((cfg & MIPS_SEGCFG_C) >> MIPS_SEGCFG_C_SHIFT));
-       } else {
-               str += sprintf(str, "         UND");
+       else
                str += sprintf(str, "         U");
-       }
 
        /* Exception configuration. */
        str += sprintf(str, "       %01ld\n",