Commit 5224e6cc authored by David S. Miller's avatar David S. Miller

[SPARC64]: Dump local cpu registers in sun4v_log_error()

This makes the debugging information more usable.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 128e6ced
...@@ -1797,7 +1797,9 @@ static const char *sun4v_err_type_to_str(u32 type) ...@@ -1797,7 +1797,9 @@ static const char *sun4v_err_type_to_str(u32 type)
}; };
} }
static void sun4v_log_error(struct sun4v_error_entry *ent, int cpu, const char *pfx, atomic_t *ocnt) extern void __show_regs(struct pt_regs * regs);
static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent, int cpu, const char *pfx, atomic_t *ocnt)
{ {
int cnt; int cnt;
...@@ -1830,6 +1832,8 @@ static void sun4v_log_error(struct sun4v_error_entry *ent, int cpu, const char * ...@@ -1830,6 +1832,8 @@ static void sun4v_log_error(struct sun4v_error_entry *ent, int cpu, const char *
pfx, pfx,
ent->err_raddr, ent->err_size, ent->err_cpu); ent->err_raddr, ent->err_size, ent->err_cpu);
__show_regs(regs);
if ((cnt = atomic_read(ocnt)) != 0) { if ((cnt = atomic_read(ocnt)) != 0) {
atomic_set(ocnt, 0); atomic_set(ocnt, 0);
wmb(); wmb();
...@@ -1862,7 +1866,7 @@ void sun4v_resum_error(struct pt_regs *regs, unsigned long offset) ...@@ -1862,7 +1866,7 @@ void sun4v_resum_error(struct pt_regs *regs, unsigned long offset)
put_cpu(); put_cpu();
sun4v_log_error(&local_copy, cpu, sun4v_log_error(regs, &local_copy, cpu,
KERN_ERR "RESUMABLE ERROR", KERN_ERR "RESUMABLE ERROR",
&sun4v_resum_oflow_cnt); &sun4v_resum_oflow_cnt);
} }
...@@ -1910,7 +1914,7 @@ void sun4v_nonresum_error(struct pt_regs *regs, unsigned long offset) ...@@ -1910,7 +1914,7 @@ void sun4v_nonresum_error(struct pt_regs *regs, unsigned long offset)
} }
#endif #endif
sun4v_log_error(&local_copy, cpu, sun4v_log_error(regs, &local_copy, cpu,
KERN_EMERG "NON-RESUMABLE ERROR", KERN_EMERG "NON-RESUMABLE ERROR",
&sun4v_nonresum_oflow_cnt); &sun4v_nonresum_oflow_cnt);
...@@ -2200,7 +2204,6 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw) ...@@ -2200,7 +2204,6 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
void die_if_kernel(char *str, struct pt_regs *regs) void die_if_kernel(char *str, struct pt_regs *regs)
{ {
static int die_counter; static int die_counter;
extern void __show_regs(struct pt_regs * regs);
extern void smp_report_regs(void); extern void smp_report_regs(void);
int count = 0; int count = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment