Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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;

@@ -1830,6 +1832,8 @@ static void sun4v_log_error(struct sun4v_error_entry *ent, int cpu, const char *
	       pfx,
	       ent->err_raddr, ent->err_size, ent->err_cpu);

	__show_regs(regs);

	if ((cnt = atomic_read(ocnt)) != 0) {
		atomic_set(ocnt, 0);
		wmb();
@@ -1862,7 +1866,7 @@ void sun4v_resum_error(struct pt_regs *regs, unsigned long offset)

	put_cpu();

	sun4v_log_error(&local_copy, cpu,
	sun4v_log_error(regs, &local_copy, cpu,
			KERN_ERR "RESUMABLE ERROR",
			&sun4v_resum_oflow_cnt);
}
@@ -1910,7 +1914,7 @@ void sun4v_nonresum_error(struct pt_regs *regs, unsigned long offset)
	}
#endif

	sun4v_log_error(&local_copy, cpu,
	sun4v_log_error(regs, &local_copy, cpu,
			KERN_EMERG "NON-RESUMABLE ERROR",
			&sun4v_nonresum_oflow_cnt);

@@ -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)
{
	static int die_counter;
	extern void __show_regs(struct pt_regs * regs);
	extern void smp_report_regs(void);
	int count = 0;