[PATCH v3 2/3] power: reset: pscrr: add watchdog pretimeout reason tracking

Faruque Ansari <[email protected]>
Newsgroups org.kernel.vger.linux-watchdog,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm
Message-ID <[email protected]>
Watchdog pretimeout resets are not recorded with a dedicated reason,
causing subsequent boots to report PSCR_UNKNOWN and making it difficult
to distinguish them from other unexpected resets.

Add PSCR_WATCHDOG_PRETIMEOUT as a dedicated reason code and prevent the
panic notifier from overwriting a watchdog pretimeout reason with
PSCR_KERNEL_PANIC when the pretimeout governor triggers a panic.

Signed-off-by: Faruque Ansari <[email protected]>
---
 drivers/power/reset/pscrr/pscrr.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/power/reset/pscrr/pscrr.c b/drivers/power/reset/pscrr/pscrr.c
index 8c45b84059a9..b7e6239e207e 100644
--- a/drivers/power/reset/pscrr/pscrr.c
+++ b/drivers/power/reset/pscrr/pscrr.c
@@ -529,12 +529,15 @@ static struct notifier_block pscrr_reboot_nb = {
 static int pscrr_panic_notifier(struct notifier_block *nb,
 				unsigned long action, void *unused)
 {
-	struct pscrr_provider_dir *dir;
 
-	set_psc_reason(PSCR_KERNEL_PANIC);
+	/*
+	 * Do not overwrite a watchdog pretimeout reason already set by the
+	 * pretimeout path before it triggered this panic.
+	 */
+	if (get_psc_reason() != PSCR_WATCHDOG_PRETIMEOUT)
+		set_psc_reason(PSCR_KERNEL_PANIC);
 
-	list_for_each_entry(dir, &pscrr_dirs, node)
-		pscrr_do_record(dir, get_psc_reason());
+	pscrr_record_current();
 
 	return NOTIFY_DONE;
 }

-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.