Skip to content

Commit

Permalink
[SPARC64]: Fix tl1 trap state capture/dump on SUN4V.
Browse files Browse the repository at this point in the history
No trap levels above 2 in privileged mode on SUN4V.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Mar 20, 2006
1 parent 135066a commit 3d6395c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
6 changes: 6 additions & 0 deletions arch/sparc64/kernel/etrap.S
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,11 @@ etraptl1: /* Save tstate/tpc/tnpc of TL 1-->4 and the tl register itself.
rdpr %tt, %g3
stx %g3, [%g2 + STACK_BIAS + 0x38]

sethi %hi(is_sun4v), %g3
lduw [%g3 + %lo(is_sun4v)], %g3
brnz,pn %g3, finish_tl1_capture
nop

wrpr %g0, 3, %tl
rdpr %tstate, %g3
stx %g3, [%g2 + STACK_BIAS + 0x40]
Expand All @@ -210,6 +215,7 @@ etraptl1: /* Save tstate/tpc/tnpc of TL 1-->4 and the tl register itself.

stx %g1, [%g2 + STACK_BIAS + 0x80]

finish_tl1_capture:
wrpr %g0, 1, %tl
661: nop
.section .sun4v_1insn_patch, "ax"
Expand Down
4 changes: 3 additions & 1 deletion arch/sparc64/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,12 @@ struct tl1_traplog {

static void dump_tl1_traplog(struct tl1_traplog *p)
{
int i;
int i, limit;

printk("TRAPLOG: Error at trap level 0x%lx, dumping track stack.\n",
p->tl);

limit = (tlb_type == hypervisor) ? 2 : 4;
for (i = 0; i < 4; i++) {
printk(KERN_CRIT
"TRAPLOG: Trap level %d TSTATE[%016lx] TPC[%016lx] "
Expand Down

0 comments on commit 3d6395c

Please sign in to comment.