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

Commit 4338774c authored by Dave Jones's avatar Dave Jones Committed by Ingo Molnar
Browse files

x86/debug: Only print out DR registers if they are not power-on defaults



The DR registers are rarely useful when decoding oopses.
With screen real estate during oopses at a premium, we can save
two lines by only printing out these registers when they are set
to something other than they power-on state.

Signed-off-by: default avatarDave Jones <davej@redhat.com>
Acked-by: default avatarBorislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20130618160911.GA24487@redhat.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 17858ca6
Loading
Loading
Loading
Loading
+8 −3
Original line number Original line Diff line number Diff line
@@ -110,11 +110,16 @@ void __show_regs(struct pt_regs *regs, int all)
	get_debugreg(d1, 1);
	get_debugreg(d1, 1);
	get_debugreg(d2, 2);
	get_debugreg(d2, 2);
	get_debugreg(d3, 3);
	get_debugreg(d3, 3);
	printk(KERN_DEFAULT "DR0: %08lx DR1: %08lx DR2: %08lx DR3: %08lx\n",
			d0, d1, d2, d3);

	get_debugreg(d6, 6);
	get_debugreg(d6, 6);
	get_debugreg(d7, 7);
	get_debugreg(d7, 7);

	/* Only print out debug registers if they are in their non-default state. */
	if ((d0 == 0) && (d1 == 0) && (d2 == 0) && (d3 == 0) &&
	    (d6 == DR6_RESERVED) && (d7 == 0x400))
		return;

	printk(KERN_DEFAULT "DR0: %08lx DR1: %08lx DR2: %08lx DR3: %08lx\n",
			d0, d1, d2, d3);
	printk(KERN_DEFAULT "DR6: %08lx DR7: %08lx\n",
	printk(KERN_DEFAULT "DR6: %08lx DR7: %08lx\n",
			d6, d7);
			d6, d7);
}
}
+8 −1
Original line number Original line Diff line number Diff line
@@ -105,11 +105,18 @@ void __show_regs(struct pt_regs *regs, int all)
	get_debugreg(d0, 0);
	get_debugreg(d0, 0);
	get_debugreg(d1, 1);
	get_debugreg(d1, 1);
	get_debugreg(d2, 2);
	get_debugreg(d2, 2);
	printk(KERN_DEFAULT "DR0: %016lx DR1: %016lx DR2: %016lx\n", d0, d1, d2);
	get_debugreg(d3, 3);
	get_debugreg(d3, 3);
	get_debugreg(d6, 6);
	get_debugreg(d6, 6);
	get_debugreg(d7, 7);
	get_debugreg(d7, 7);

	/* Only print out debug registers if they are in their non-default state. */
	if ((d0 == 0) && (d1 == 0) && (d2 == 0) && (d3 == 0) &&
	    (d6 == DR6_RESERVED) && (d7 == 0x400))
		return;

	printk(KERN_DEFAULT "DR0: %016lx DR1: %016lx DR2: %016lx\n", d0, d1, d2);
	printk(KERN_DEFAULT "DR3: %016lx DR6: %016lx DR7: %016lx\n", d3, d6, d7);
	printk(KERN_DEFAULT "DR3: %016lx DR6: %016lx DR7: %016lx\n", d3, d6, d7);

}
}


void release_thread(struct task_struct *dead_task)
void release_thread(struct task_struct *dead_task)