Commit ca5dd395 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt

powerpc: Fix xmon dl command for new printk implementation

Since the printk internals were reworked the xmon 'dl' command which
dumps the content of __log_buf has stopped working.

It is now a structured buffer, so just dumping it doesn't really work.

Use the helpers added for kgdb to print out the content.
Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 1267643d
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/reboot.h> #include <linux/reboot.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/kallsyms.h> #include <linux/kallsyms.h>
#include <linux/kmsg_dump.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/sysrq.h> #include <linux/sysrq.h>
...@@ -2148,40 +2149,23 @@ print_address(unsigned long addr) ...@@ -2148,40 +2149,23 @@ print_address(unsigned long addr)
void void
dump_log_buf(void) dump_log_buf(void)
{ {
const unsigned long size = 128; struct kmsg_dumper dumper = { .active = 1 };
unsigned long end, addr; unsigned char buf[128];
unsigned char buf[size + 1]; size_t len;
addr = 0;
buf[size] = '\0';
if (setjmp(bus_error_jmp) != 0) { if (setjmp(bus_error_jmp) != 0) {
printf("Unable to lookup symbol __log_buf!\n"); printf("Error dumping printk buffer!\n");
return; return;
} }
catch_memory_errors = 1; catch_memory_errors = 1;
sync(); sync();
addr = kallsyms_lookup_name("__log_buf");
if (! addr)
printf("Symbol __log_buf not found!\n");
else {
end = addr + (1 << CONFIG_LOG_BUF_SHIFT);
while (addr < end) {
if (! mread(addr, buf, size)) {
printf("Can't read memory at address 0x%lx\n", addr);
break;
}
printf("%s", buf);
if (strlen(buf) < size) kmsg_dump_rewind_nolock(&dumper);
break; while (kmsg_dump_get_line_nolock(&dumper, false, buf, sizeof(buf), &len)) {
buf[len] = '\0';
addr += size; printf("%s", buf);
} }
}
sync(); sync();
/* wait a little while to see if we get a machine check */ /* wait a little while to see if we get a machine check */
......
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