diff options
author | Renn Wu <rewu@nvidia.com> | 2015-02-03 10:27:18 +0800 |
---|---|---|
committer | Matthew Pedro <mapedro@nvidia.com> | 2015-06-08 12:01:04 -0700 |
commit | b1de4caf2f12e1bc9c3a4e08dd60b5de53b7520a (patch) | |
tree | 727935d014482a714ef9808ce4245ca4a6b19efc /drivers | |
parent | d89af238e13dbd1f2a01cb5392902313ad367ef2 (diff) |
watchdog: use FIQ WDT for soft lockup stack dump
Using Tegra WDT to trigger FIQ when system is in soft lockup.
Bug 1581432
Change-Id: I853a88a3f6e9402c978db18c5a63e903c582040a
Signed-off-by: Renn Wu <rewu@nvidia.com>
Reviewed-on: http://git-master/r/265871
(cherry picked from commit f115f435d471af22ddec5e9d969662f79193f846)
Reviewed-on: http://git-master/r/680353
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Reviewed-by: Winnie Hsu <whsu@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/android/Makefile | 1 | ||||
-rw-r--r-- | drivers/watchdog/tegra_wdt.c | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile index 907b62f56203..0a01e1914905 100644 --- a/drivers/staging/android/Makefile +++ b/drivers/staging/android/Makefile @@ -1,7 +1,6 @@ ccflags-y += -I$(src) # needed for trace events obj-y += ion/ -obj-$(CONFIG_FIQ_DEBUGGER) += fiq_debugger/ obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o obj-$(CONFIG_ASHMEM) += ashmem.o diff --git a/drivers/watchdog/tegra_wdt.c b/drivers/watchdog/tegra_wdt.c index d83adeff021e..59a410038569 100644 --- a/drivers/watchdog/tegra_wdt.c +++ b/drivers/watchdog/tegra_wdt.c @@ -157,6 +157,11 @@ static irqreturn_t tegra_wdt_interrupt(int irq, void *dev_id) #define PMC_RST_STATUS 0x1b4 struct tegra_wdt *tegra_wdt[MAX_NR_CPU_WDT]; +/* + * In order to generate the stack dump for the CPU which has IRQ off, we must + * use the FIQ. TEGRA WDT can generate the FIQ if we do not ACK the IRQ. + */ +bool wdt_nmi_ack_off; static inline void tegra_wdt_ping(struct tegra_wdt *wdt) { @@ -170,7 +175,8 @@ static inline void tegra_wdt_ping(struct tegra_wdt *wdt) #if !defined(CONFIG_TRUSTED_FOUNDATIONS) && \ defined(CONFIG_ARCH_TEGRA_12x_SOC) && defined(CONFIG_FIQ_DEBUGGER) - writel(WDT_CMD_START_COUNTER, wdt->wdt_avp_source + WDT_CMD); + if (wdt_nmi_ack_off == false) + writel(WDT_CMD_START_COUNTER, wdt->wdt_avp_source + WDT_CMD); #endif } |