]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
riscv: Introduce PBMT field to PTDUMP
authorYu Chien Peter Lin <peterlin@andestech.com>
Thu, 21 Sep 2023 02:50:21 +0000 (10:50 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Sun, 5 Nov 2023 17:41:54 +0000 (09:41 -0800)
This patch introduces the PBMT field to the PTDUMP, so it can
display the memory attributes for NC or IO.

Signed-off-by: Yu Chien Peter Lin <peterlin@andestech.com>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Tested-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20230921025022.3989723-3-peterlin@andestech.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/mm/ptdump.c

index 57a0926c66276ca1297dae7cf48bc3b1fcab223a..13997cf3fe36665256c7f9aa5f4c4b87437748e2 100644 (file)
@@ -135,6 +135,12 @@ struct prot_bits {
 
 static const struct prot_bits pte_bits[] = {
        {
+#ifdef CONFIG_64BIT
+               .mask = _PAGE_MTMASK_SVPBMT,
+               .set = "MT(%s)",
+               .clear = "  ..  ",
+       }, {
+#endif
                .mask = _PAGE_SOFT,
                .set = "RSW(%d)",
                .clear = "  ..  ",
@@ -205,6 +211,16 @@ static void dump_prot(struct pg_state *st)
                if (val) {
                        if (pte_bits[i].mask == _PAGE_SOFT)
                                sprintf(s, pte_bits[i].set, val >> 8);
+#ifdef CONFIG_64BIT
+                       else if (pte_bits[i].mask == _PAGE_MTMASK_SVPBMT) {
+                               if (val == _PAGE_NOCACHE_SVPBMT)
+                                       sprintf(s, pte_bits[i].set, "NC");
+                               else if (val == _PAGE_IO_SVPBMT)
+                                       sprintf(s, pte_bits[i].set, "IO");
+                               else
+                                       sprintf(s, pte_bits[i].set, "??");
+                       }
+#endif
                        else
                                sprintf(s, "%s", pte_bits[i].set);
                } else {