From: anton@samba.org
To: linuxppc-dev@ozlabs.org
Cc: paulus@samba.org
Subject: [patch 05/10] Use KERN_EMERG everywhere in oops printout
Date: Tue, 20 Mar 2007 20:38:15 -0500 [thread overview]
Message-ID: <20070321013825.179096000@samba.org> (raw)
In-Reply-To: 20070321013810.404636000@samba.org
Turn the volume up to 11. Distros will silence our oops messages no more.
Use of sunglasses recommended.
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux-2.6/arch/powerpc/kernel/traps.c
===================================================================
--- linux-2.6.orig/arch/powerpc/kernel/traps.c 2007-03-20 09:53:57.000000000 -0500
+++ linux-2.6/arch/powerpc/kernel/traps.c 2007-03-20 09:53:58.000000000 -0500
@@ -140,7 +140,10 @@
}
if (++die.lock_owner_depth < 3) {
- printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
+ printk(KERN_EMERG "Oops: %s, sig: %ld [#%d]\n", str, err,
+ ++die_counter);
+
+ printk(KERN_EMERG);
#ifdef CONFIG_PREEMPT
printk("PREEMPT ");
#endif
@@ -155,10 +158,11 @@
#endif
printk("%s\n", ppc_md.name ? ppc_md.name : "");
+ printk(KERN_EMERG);
print_modules();
- show_regs(regs);
+ show_regs_log_lvl(regs, KERN_EMERG);
} else {
- printk("Recursive die() failure, output suppressed\n");
+ printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
}
bust_spinlocks(0);
Index: linux-2.6/arch/powerpc/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/powerpc/kernel/process.c 2007-03-20 09:53:47.000000000 -0500
+++ linux-2.6/arch/powerpc/kernel/process.c 2007-03-20 09:53:58.000000000 -0500
@@ -49,8 +49,6 @@
#include <asm/firmware.h>
#endif
-extern unsigned long _get_SP(void);
-
#ifndef CONFIG_SMP
struct task_struct *last_task_used_math = NULL;
struct task_struct *last_task_used_altivec = NULL;
@@ -347,13 +345,13 @@
unsigned long pc = regs->nip - (instructions_to_print * 3 / 4 *
sizeof(int));
- printk("Instruction dump:");
+ printk(KERN_EMERG "Instruction dump:");
for (i = 0; i < instructions_to_print; i++) {
int instr;
if (!(i % 8))
- printk("\n");
+ printk("\n%s", KERN_EMERG);
/* We use __get_user here *only* to avoid an OOPS on a
* bad address because the pc *should* only be a
@@ -411,21 +409,25 @@
#define LAST_VOLATILE 12
#endif
-void show_regs(struct pt_regs * regs)
+static void show_stack_log_lvl(struct task_struct *tsk, unsigned long *stack,
+ char *log_lvl);
+
+void show_regs_log_lvl(struct pt_regs *regs, char *log_lvl)
{
int i, trap;
- printk("NIP: "REG" LR: "REG" CTR: "REG"\n",
- regs->nip, regs->link, regs->ctr);
- printk("REGS: %p TRAP: %04lx %s (%s)\n",
+ printk("%sNIP: "REG" LR: "REG" CTR: "REG"\n",
+ log_lvl, regs->nip, regs->link, regs->ctr);
+ printk("%sREGS: %p TRAP: %04lx %s (%s)\n", log_lvl,
regs, regs->trap, print_tainted(), init_utsname()->release);
- printk("MSR: "REG" ", regs->msr);
+ printk("%sMSR: "REG" ", log_lvl, regs->msr);
printbits(regs->msr, msr_bits);
printk(" CR: %08lX XER: %08lX\n", regs->ccr, regs->xer);
trap = TRAP(regs);
if (trap == 0x300 || trap == 0x600)
- printk("DAR: "REG", DSISR: "REG"\n", regs->dar, regs->dsisr);
- printk("TASK = %p[%d] '%s' THREAD: %p",
+ printk("%sDAR: "REG", DSISR: "REG"\n", log_lvl, regs->dar,
+ regs->dsisr);
+ printk("%sTASK = %p[%d] '%s' THREAD: %p", log_lvl,
current, current->pid, current->comm, task_thread_info(current));
#ifdef CONFIG_SMP
@@ -434,7 +436,7 @@
for (i = 0; i < 32; i++) {
if ((i % REGS_PER_LINE) == 0)
- printk("\n" KERN_INFO "GPR%02d: ", i);
+ printk("\n%sGPR%02d: ", log_lvl, i);
printk(REG " ", regs->gpr[i]);
if (i == LAST_VOLATILE && !FULL_REGS(regs))
break;
@@ -445,16 +447,21 @@
* Lookup NIP late so we have the best change of getting the
* above info out without failing
*/
- printk("NIP ["REG"] ", regs->nip);
+ printk("%sNIP ["REG"] ", log_lvl, regs->nip);
print_symbol("%s\n", regs->nip);
- printk("LR ["REG"] ", regs->link);
+ printk("%sLR ["REG"] ", log_lvl, regs->link);
print_symbol("%s\n", regs->link);
#endif
- show_stack(current, (unsigned long *) regs->gpr[1]);
+ show_stack_log_lvl(current, (unsigned long *) regs->gpr[1], KERN_EMERG);
if (!user_mode(regs))
show_instructions(regs);
}
+void show_regs(struct pt_regs *regs)
+{
+ show_regs_log_lvl(regs, "");
+}
+
void exit_thread(void)
{
discard_lazy_cpu_state();
@@ -884,7 +891,8 @@
static int kstack_depth_to_print = 64;
-void show_stack(struct task_struct *tsk, unsigned long *stack)
+static void show_stack_log_lvl(struct task_struct *tsk, unsigned long *stack,
+ char *log_lvl)
{
unsigned long sp, ip, lr, newsp;
int count = 0;
@@ -901,7 +909,7 @@
}
lr = 0;
- printk("Call Trace:\n");
+ printk("%sCall Trace:\n", log_lvl);
do {
if (!validate_sp(sp, tsk, MIN_STACK_FRAME))
return;
@@ -910,7 +918,7 @@
newsp = stack[0];
ip = stack[FRAME_LR_SAVE];
if (!firstframe || ip != lr) {
- printk("["REG"] ["REG"] ", sp, ip);
+ printk("%s["REG"] ["REG"] ", log_lvl, sp, ip);
print_symbol("%s", ip);
if (firstframe)
printk(" (unreliable)");
@@ -926,9 +934,10 @@
&& stack[FRAME_MARKER] == REGS_MARKER) {
struct pt_regs *regs = (struct pt_regs *)
(sp + STACK_FRAME_OVERHEAD);
- printk("--- Exception: %lx", regs->trap);
+ printk("%s--- Exception: %lx", log_lvl, regs->trap);
print_symbol(" at %s\n", regs->nip);
lr = regs->link;
+ printk(KERN_EMERG);
print_symbol(" LR = %s\n", lr);
firstframe = 1;
}
@@ -937,6 +946,11 @@
} while (count++ < kstack_depth_to_print);
}
+void show_stack(struct task_struct *tsk, unsigned long *stack)
+{
+ show_stack_log_lvl(tsk, stack, "");
+}
+
void dump_stack(void)
{
show_stack(current, NULL);
Index: linux-2.6/include/asm-powerpc/system.h
===================================================================
--- linux-2.6.orig/include/asm-powerpc/system.h 2007-03-20 09:53:19.000000000 -0500
+++ linux-2.6/include/asm-powerpc/system.h 2007-03-20 09:53:58.000000000 -0500
@@ -103,6 +103,7 @@
extern int set_dabr(unsigned long dabr);
extern void print_backtrace(unsigned long *);
+extern void show_regs_log_lvl(struct pt_regs * regs, char * log_lvl);
extern void show_regs(struct pt_regs * regs);
extern void flush_instruction_cache(void);
extern void hard_reset_now(void);
Index: linux-2.6/arch/powerpc/mm/fault.c
===================================================================
--- linux-2.6.orig/arch/powerpc/mm/fault.c 2007-03-20 09:53:19.000000000 -0500
+++ linux-2.6/arch/powerpc/mm/fault.c 2007-03-20 09:53:58.000000000 -0500
@@ -429,20 +429,20 @@
switch (regs->trap) {
case 0x300:
case 0x380:
- printk(KERN_ALERT "Unable to handle kernel paging request for "
+ printk(KERN_EMERG "Unable to handle kernel paging request for "
"data at address 0x%08lx\n", regs->dar);
break;
case 0x400:
case 0x480:
- printk(KERN_ALERT "Unable to handle kernel paging request for "
+ printk(KERN_EMERG "Unable to handle kernel paging request for "
"instruction fetch\n");
break;
default:
- printk(KERN_ALERT "Unable to handle kernel paging request for "
+ printk(KERN_EMERG "Unable to handle kernel paging request for "
"unknown fault\n");
break;
}
- printk(KERN_ALERT "Faulting instruction address: 0x%08lx\n",
+ printk(KERN_EMERG "Faulting instruction address: 0x%08lx\n",
regs->nip);
die("Kernel access of bad area", regs, sig);
--
next prev parent reply other threads:[~2007-03-21 1:38 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-21 1:38 [patch 00/10] Oops path and debugger hooks rework anton
2007-03-21 1:38 ` [patch 01/10] Add missing oops_enter/oops_exit anton
2007-03-21 1:38 ` [patch 02/10] Clean up pmac_backlight_unblank in oops path anton
2007-03-21 1:38 ` [patch 03/10] Handle recursive oopses anton
2007-03-21 1:38 ` [patch 04/10] Fix backwards ? : when printing machine type anton
2007-03-21 1:38 ` anton [this message]
2007-03-21 2:23 ` [patch 05/10] Use KERN_EMERG everywhere in oops printout Stephen Rothwell
2007-03-23 11:00 ` Paul Mackerras
2007-03-21 1:38 ` [patch 06/10] Add notify die hooks and remove some redundant debugger hooks anton
2007-03-21 16:14 ` Christoph Hellwig
2007-03-23 11:14 ` Paul Mackerras
2007-03-23 11:29 ` Christoph Hellwig
2007-03-23 12:04 ` Ananth N Mavinakayanahalli
2007-03-23 14:09 ` Anton Blanchard
2007-03-24 3:17 ` Paul Mackerras
2007-04-09 10:21 ` Paul Mackerras
2007-04-10 4:49 ` Ananth N Mavinakayanahalli
2007-03-21 1:38 ` [patch 07/10] Page fault handler should not depend on CONFIG_KPROBES anton
2007-03-21 16:13 ` Christoph Hellwig
2007-03-23 14:19 ` Anton Blanchard
2007-03-21 1:38 ` [patch 08/10] Use notifier hooks for xmon anton
2007-03-21 1:38 ` [patch 09/10] Use lowercase for hex printouts in oops messages anton
2007-03-21 2:14 ` Olof Johansson
2007-03-21 7:17 ` Geert Uytterhoeven
2007-03-21 16:44 ` Segher Boessenkool
2007-03-21 1:38 ` [patch 10/10] Make sure we only enable xmon once anton
2007-03-21 2:04 ` Anton Blanchard
2007-03-21 2:11 ` Olof Johansson
2007-03-21 2:05 ` Anton Blanchard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070321013825.179096000@samba.org \
--to=anton@samba.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.