From 5aa2357ea0da4a682ae77adba62ca5a8da5a91c8 Mon Sep 17 00:00:00 2001 From: "jianxin.pan" Date: Mon, 7 May 2018 14:25:48 +0800 Subject: [PATCH] debug: add watchdog trigger in sysrq PD#165796: watchdog trigger to debug wdt related behavior "echo x > /proc/sysrq-trigger" to trigger watchdog Change-Id: Iddd92cd64c9a7ccdf452f23706b396eaf50ae448 Signed-off-by: jianxin.pan --- drivers/tty/sysrq.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index 53cbf4ebef10..359fbd5366e7 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -150,6 +150,26 @@ static struct sysrq_key_op sysrq_crash_op = { .enable_mask = SYSRQ_ENABLE_DUMP, }; +#ifdef CONFIG_AMLOGIC_MODIFY +static DEFINE_SPINLOCK(wdt_lock); +static void sysrq_handle_wdt_sw_rst(int key) +{ + unsigned long flags; + + spin_lock_irqsave(&wdt_lock, flags); + while (1) + ; + /* wait for wdt fiq to kick in. */ +} + +static struct sysrq_key_op sysrq_wdt_sw_op = { + .handler = sysrq_handle_wdt_sw_rst, + .help_msg = "dis intr to riggger wdt rst(x)", + .action_msg = "Trigger a sw wdt reset", + .enable_mask = SYSRQ_ENABLE_DUMP, +}; +#endif + static void sysrq_handle_reboot(int key) { lockdep_off(); @@ -484,7 +504,9 @@ static struct sysrq_key_op *sysrq_key_table[36] = { /* x: May be registered on mips for TLB dump */ /* x: May be registered on ppc/powerpc for xmon */ /* x: May be registered on sparc64 for global PMU dump */ - NULL, /* x */ +#ifdef CONFIG_AMLOGIC_MODIFY + &sysrq_wdt_sw_op, /* x */ +#endif /* y: May be registered on sparc64 for global register dump */ NULL, /* y */ &sysrq_ftrace_dump_op, /* z */