riscv: Introduce PBMT field to PTDUMP

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>
This commit is contained in:
Yu Chien Peter Lin 2023-09-21 10:50:21 +08:00 committed by Palmer Dabbelt
parent d5d2c264d3
commit 0713ff3371
No known key found for this signature in database
GPG Key ID: 2E1319F35FBB1889

View File

@ -135,6 +135,12 @@ struct prot_bits {
static const struct prot_bits pte_bits[] = { static const struct prot_bits pte_bits[] = {
{ {
#ifdef CONFIG_64BIT
.mask = _PAGE_MTMASK_SVPBMT,
.set = "MT(%s)",
.clear = " .. ",
}, {
#endif
.mask = _PAGE_SOFT, .mask = _PAGE_SOFT,
.set = "RSW(%d)", .set = "RSW(%d)",
.clear = " .. ", .clear = " .. ",
@ -205,6 +211,16 @@ static void dump_prot(struct pg_state *st)
if (val) { if (val) {
if (pte_bits[i].mask == _PAGE_SOFT) if (pte_bits[i].mask == _PAGE_SOFT)
sprintf(s, pte_bits[i].set, val >> 8); 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 else
sprintf(s, "%s", pte_bits[i].set); sprintf(s, "%s", pte_bits[i].set);
} else { } else {