You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
MIPS: dump_tlb: Fix printk continuations
Since commit 4bcc595ccd ("printk: reinstate KERN_CONT for printing
continuation lines") the output from TLB dumps on MIPS has been
pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
provide the appropriate markers & restore the expected output.
Continuation is also used for the second line of each TLB entry printed
in dump_tlb.c even though it has a newline, since it is a continuation
of the interpretation of the same TLB entry. For example:
[ 46.371884] Index: 0 pgmask=16kb va=77654000 asid=73 gid=00
[ri=0 xi=0 pa=ffc18000 c=5 d=0 v=1 g=0] [ri=0 xi=0 pa=ffc1c000 c=5 d=0 v=1 g=0]
[ 46.385380] Index: 12 pgmask=16kb va=004b4000 asid=73 gid=00
[ri=0 xi=0 pa=00000000 c=0 d=0 v=0 g=0] [ri=0 xi=0 pa=ffb00000 c=5 d=1 v=1 g=0]
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Maciej W. Rozycki <macro@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14444/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
752f549982
commit
8a98495c70
+22
-22
@@ -135,42 +135,42 @@ static void dump_tlb(int first, int last)
|
|||||||
c0 = (entrylo0 & ENTRYLO_C) >> ENTRYLO_C_SHIFT;
|
c0 = (entrylo0 & ENTRYLO_C) >> ENTRYLO_C_SHIFT;
|
||||||
c1 = (entrylo1 & ENTRYLO_C) >> ENTRYLO_C_SHIFT;
|
c1 = (entrylo1 & ENTRYLO_C) >> ENTRYLO_C_SHIFT;
|
||||||
|
|
||||||
printk("va=%0*lx asid=%0*lx",
|
pr_cont("va=%0*lx asid=%0*lx",
|
||||||
vwidth, (entryhi & ~0x1fffUL),
|
vwidth, (entryhi & ~0x1fffUL),
|
||||||
asidwidth, entryhi & asidmask);
|
asidwidth, entryhi & asidmask);
|
||||||
if (cpu_has_guestid)
|
if (cpu_has_guestid)
|
||||||
printk(" gid=%02lx",
|
pr_cont(" gid=%02lx",
|
||||||
(guestctl1 & MIPS_GCTL1_RID)
|
(guestctl1 & MIPS_GCTL1_RID)
|
||||||
>> MIPS_GCTL1_RID_SHIFT);
|
>> MIPS_GCTL1_RID_SHIFT);
|
||||||
/* RI/XI are in awkward places, so mask them off separately */
|
/* RI/XI are in awkward places, so mask them off separately */
|
||||||
pa = entrylo0 & ~(MIPS_ENTRYLO_RI | MIPS_ENTRYLO_XI);
|
pa = entrylo0 & ~(MIPS_ENTRYLO_RI | MIPS_ENTRYLO_XI);
|
||||||
if (xpa)
|
if (xpa)
|
||||||
pa |= (unsigned long long)readx_c0_entrylo0() << 30;
|
pa |= (unsigned long long)readx_c0_entrylo0() << 30;
|
||||||
pa = (pa << 6) & PAGE_MASK;
|
pa = (pa << 6) & PAGE_MASK;
|
||||||
printk("\n\t[");
|
pr_cont("\n\t[");
|
||||||
if (cpu_has_rixi)
|
if (cpu_has_rixi)
|
||||||
printk("ri=%d xi=%d ",
|
pr_cont("ri=%d xi=%d ",
|
||||||
(entrylo0 & MIPS_ENTRYLO_RI) ? 1 : 0,
|
(entrylo0 & MIPS_ENTRYLO_RI) ? 1 : 0,
|
||||||
(entrylo0 & MIPS_ENTRYLO_XI) ? 1 : 0);
|
(entrylo0 & MIPS_ENTRYLO_XI) ? 1 : 0);
|
||||||
printk("pa=%0*llx c=%d d=%d v=%d g=%d] [",
|
pr_cont("pa=%0*llx c=%d d=%d v=%d g=%d] [",
|
||||||
pwidth, pa, c0,
|
pwidth, pa, c0,
|
||||||
(entrylo0 & ENTRYLO_D) ? 1 : 0,
|
(entrylo0 & ENTRYLO_D) ? 1 : 0,
|
||||||
(entrylo0 & ENTRYLO_V) ? 1 : 0,
|
(entrylo0 & ENTRYLO_V) ? 1 : 0,
|
||||||
(entrylo0 & ENTRYLO_G) ? 1 : 0);
|
(entrylo0 & ENTRYLO_G) ? 1 : 0);
|
||||||
/* RI/XI are in awkward places, so mask them off separately */
|
/* RI/XI are in awkward places, so mask them off separately */
|
||||||
pa = entrylo1 & ~(MIPS_ENTRYLO_RI | MIPS_ENTRYLO_XI);
|
pa = entrylo1 & ~(MIPS_ENTRYLO_RI | MIPS_ENTRYLO_XI);
|
||||||
if (xpa)
|
if (xpa)
|
||||||
pa |= (unsigned long long)readx_c0_entrylo1() << 30;
|
pa |= (unsigned long long)readx_c0_entrylo1() << 30;
|
||||||
pa = (pa << 6) & PAGE_MASK;
|
pa = (pa << 6) & PAGE_MASK;
|
||||||
if (cpu_has_rixi)
|
if (cpu_has_rixi)
|
||||||
printk("ri=%d xi=%d ",
|
pr_cont("ri=%d xi=%d ",
|
||||||
(entrylo1 & MIPS_ENTRYLO_RI) ? 1 : 0,
|
(entrylo1 & MIPS_ENTRYLO_RI) ? 1 : 0,
|
||||||
(entrylo1 & MIPS_ENTRYLO_XI) ? 1 : 0);
|
(entrylo1 & MIPS_ENTRYLO_XI) ? 1 : 0);
|
||||||
printk("pa=%0*llx c=%d d=%d v=%d g=%d]\n",
|
pr_cont("pa=%0*llx c=%d d=%d v=%d g=%d]\n",
|
||||||
pwidth, pa, c1,
|
pwidth, pa, c1,
|
||||||
(entrylo1 & ENTRYLO_D) ? 1 : 0,
|
(entrylo1 & ENTRYLO_D) ? 1 : 0,
|
||||||
(entrylo1 & ENTRYLO_V) ? 1 : 0,
|
(entrylo1 & ENTRYLO_V) ? 1 : 0,
|
||||||
(entrylo1 & ENTRYLO_G) ? 1 : 0);
|
(entrylo1 & ENTRYLO_G) ? 1 : 0);
|
||||||
}
|
}
|
||||||
printk("\n");
|
printk("\n");
|
||||||
|
|
||||||
|
|||||||
@@ -53,15 +53,15 @@ static void dump_tlb(int first, int last)
|
|||||||
*/
|
*/
|
||||||
printk("Index: %2d ", i);
|
printk("Index: %2d ", i);
|
||||||
|
|
||||||
printk("va=%08lx asid=%08lx"
|
pr_cont("va=%08lx asid=%08lx"
|
||||||
" [pa=%06lx n=%d d=%d v=%d g=%d]",
|
" [pa=%06lx n=%d d=%d v=%d g=%d]",
|
||||||
entryhi & PAGE_MASK,
|
entryhi & PAGE_MASK,
|
||||||
entryhi & asid_mask,
|
entryhi & asid_mask,
|
||||||
entrylo0 & PAGE_MASK,
|
entrylo0 & PAGE_MASK,
|
||||||
(entrylo0 & R3K_ENTRYLO_N) ? 1 : 0,
|
(entrylo0 & R3K_ENTRYLO_N) ? 1 : 0,
|
||||||
(entrylo0 & R3K_ENTRYLO_D) ? 1 : 0,
|
(entrylo0 & R3K_ENTRYLO_D) ? 1 : 0,
|
||||||
(entrylo0 & R3K_ENTRYLO_V) ? 1 : 0,
|
(entrylo0 & R3K_ENTRYLO_V) ? 1 : 0,
|
||||||
(entrylo0 & R3K_ENTRYLO_G) ? 1 : 0);
|
(entrylo0 & R3K_ENTRYLO_G) ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printk("\n");
|
printk("\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user