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

Commit 9de62e0d authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Dmitry Shmidt
Browse files

ANDROID: ARM: fiq_debugger: Use kmsg_dumper to dump kernel logs

parent d05890d3
Loading
Loading
Loading
Loading
+10 −30
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/kernel_stat.h>
#include <linux/kmsg_dump.h>
#include <linux/irq.h>
#include <linux/delay.h>
#include <linux/reboot.h>
@@ -207,29 +208,19 @@ static void debug_prompt(struct fiq_debugger_state *state)
	debug_puts(state, "debug> ");
}

int log_buf_copy(char *dest, int idx, int len);
static void dump_kernel_log(struct fiq_debugger_state *state)
{
	char buf[1024];
	int idx = 0;
	int ret;
	int saved_oip;
	char buf[512];
	size_t len;
	struct kmsg_dumper dumper = { .active = true };

	/* setting oops_in_progress prevents log_buf_copy()
	 * from trying to take a spinlock which will make it
	 * very unhappy in some cases...
	 */
	saved_oip = oops_in_progress;
	oops_in_progress = 1;
	for (;;) {
		ret = log_buf_copy(buf, idx, 1023);
		if (ret <= 0)
			break;
		buf[ret] = 0;

	kmsg_dump_rewind_nolock(&dumper);
	while (kmsg_dump_get_line_nolock(&dumper, true, buf,
					 sizeof(buf) - 1, &len)) {
		buf[len] = 0;
		debug_puts(state, buf);
		idx += ret;
	}
	oops_in_progress = saved_oip;
}

static char *mode_name(unsigned cpsr)
@@ -523,18 +514,7 @@ static void begin_syslog_dump(struct fiq_debugger_state *state)

static void end_syslog_dump(struct fiq_debugger_state *state)
{
	char buf[128];
	int ret;
	int idx = 0;

	while (1) {
		ret = log_buf_copy(buf, idx, sizeof(buf) - 1);
		if (ret <= 0)
			break;
		buf[ret] = 0;
		debug_printf(state, "%s", buf);
		idx += ret;
	}
	dump_kernel_log(state);
}
#endif