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

Commit 9b5a9738 authored by Prakruthi Deepak Heragu's avatar Prakruthi Deepak Heragu
Browse files

soc: qcom: Add forever loop after non-secure bite configuration



The core which induces the non-secure bite should not
proceed further. Non-secure bite is a secure interrupt
and one of the core handles and that may not be the same
core which configured the watchdog. Add forever loop
after non-secure bit programming, so that core do not
proceed further.

Change-Id: I5523ad00d47755df6eed2bfb9210b585ee22f4ed
Signed-off-by: default avatarPrasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: default avatarPrakruthi Deepak Heragu <pheragu@codeaurora.org>
parent e8c9c4f0
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 */

#include <linux/module.h>
@@ -491,6 +491,16 @@ void msm_trigger_wdog_bite(void)
		__raw_readl(wdog_data->base + WDT0_EN),
		__raw_readl(wdog_data->base + WDT0_BARK_TIME),
		__raw_readl(wdog_data->base + WDT0_BITE_TIME));
	/*
	 * This function induces the non-secure bite and control
	 * should not return to the calling function. Non-secure
	 * bite interrupt is affined to all the cores and it may
	 * not be handled by the same cores which configured
	 * non-secure bite. So add forever loop here.
	 */
	while (1)
		udelay(1);

}
EXPORT_SYMBOL(msm_trigger_wdog_bite);

@@ -510,7 +520,7 @@ static irqreturn_t wdog_bark_handler(int irq, void *dev_id)
	if (wdog_dd->do_ipi_ping)
		dump_cpu_alive_mask(wdog_dd);
	msm_trigger_wdog_bite();
	panic("Failed to cause a watchdog bite! - Falling back to kernel panic!");

	return IRQ_HANDLED;
}