mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
Revert "soc: qcom: Also dump watchdog data in bite cases"
This reverts commit 5f250a3f69b949eefec8a1062b3d64a32088047a. Change-Id: I7cc97556c79dc85f0152092c6cdb175a2d48daa6 Signed-off-by: Richard Raya <rdxzv.dev@gmail.com>
This commit is contained in:
parent
8f25c15578
commit
bfdaa3af2f
@ -93,7 +93,6 @@ struct msm_watchdog_data {
|
||||
|
||||
struct task_struct *watchdog_task;
|
||||
struct timer_list pet_timer;
|
||||
struct timer_list pet_observer;
|
||||
wait_queue_head_t pet_complete;
|
||||
|
||||
bool timer_expired;
|
||||
@ -229,7 +228,6 @@ static void wdog_disable(struct msm_watchdog_data *wdog_dd)
|
||||
smp_mb();
|
||||
atomic_notifier_chain_unregister(&panic_notifier_list,
|
||||
&wdog_dd->panic_blk);
|
||||
del_timer_sync(&wdog_dd->pet_observer);
|
||||
del_timer_sync(&wdog_dd->pet_timer);
|
||||
/* may be suspended after the first write above */
|
||||
__raw_writel(0, wdog_dd->base + WDT0_EN);
|
||||
@ -359,9 +357,12 @@ static ssize_t wdog_pet_time_get(struct device *dev,
|
||||
|
||||
static DEVICE_ATTR(pet_time, 0400, wdog_pet_time_get, NULL);
|
||||
|
||||
static int get_wdog_sts(struct msm_watchdog_data *wdog_dd)
|
||||
static void pet_watchdog(struct msm_watchdog_data *wdog_dd)
|
||||
{
|
||||
int i, count, prev_count = 0;
|
||||
int slack, i, count, prev_count = 0;
|
||||
unsigned long long time_ns;
|
||||
unsigned long long slack_ns;
|
||||
unsigned long long bark_time_ns = wdog_dd->bark_time * 1000000ULL;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
count = (__raw_readl(wdog_dd->base + WDT0_STS) >> 1) & 0xFFFFF;
|
||||
@ -370,18 +371,6 @@ static int get_wdog_sts(struct msm_watchdog_data *wdog_dd)
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static void pet_watchdog(struct msm_watchdog_data *wdog_dd)
|
||||
{
|
||||
int slack, count;
|
||||
unsigned long long time_ns;
|
||||
unsigned long long slack_ns;
|
||||
unsigned long long bark_time_ns = wdog_dd->bark_time * 1000000ULL;
|
||||
|
||||
count = get_wdog_sts(wdog_dd);
|
||||
slack = ((wdog_dd->bark_time * WDT_HZ) / 1000) - count;
|
||||
if (slack < wdog_dd->min_slack_ticks)
|
||||
wdog_dd->min_slack_ticks = slack;
|
||||
@ -424,30 +413,6 @@ static void ping_other_cpus(struct msm_watchdog_data *wdog_dd)
|
||||
}
|
||||
}
|
||||
|
||||
/* Set pet observer to expire 1 second before watchdog bite */
|
||||
#define PET_OBSERVER_OFFSET_SECS (WDOG_BITE_OFFSET_IN_SECONDS - 1)
|
||||
|
||||
static void print_wdog_data(struct msm_watchdog_data *wdog_dd);
|
||||
|
||||
static void pet_observer_fn(unsigned long data)
|
||||
{
|
||||
struct msm_watchdog_data *wdog_dd =
|
||||
(struct msm_watchdog_data *)data;
|
||||
int wdog_counter = get_wdog_sts(wdog_dd) / WDT_HZ;
|
||||
int observer_threshold = ((wdog_dd->bark_time / 1000) +
|
||||
PET_OBSERVER_OFFSET_SECS);
|
||||
|
||||
if (wdog_counter < observer_threshold)
|
||||
mod_timer(&wdog_dd->pet_observer, jiffies + msecs_to_jiffies(
|
||||
(observer_threshold - wdog_counter) * 1000));
|
||||
else {
|
||||
pr_warn("MSM watchdog blocked for %d seconds\n", wdog_counter);
|
||||
pr_warn("Print watchdog data:\n");
|
||||
print_wdog_data(wdog_dd);
|
||||
pr_warn("Watchdog will bite in 1 second.\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void pet_task_wakeup(unsigned long data)
|
||||
{
|
||||
struct msm_watchdog_data *wdog_dd =
|
||||
@ -540,7 +505,6 @@ static int msm_watchdog_remove(struct platform_device *pdev)
|
||||
if (wdog_dd->irq_ppi)
|
||||
free_percpu(wdog_dd->wdog_cpu_dd);
|
||||
dev_info(wdog_dd->dev, "MSM Watchdog Exit - Deactivated\n");
|
||||
del_timer_sync(&wdog_dd->pet_observer);
|
||||
del_timer_sync(&wdog_dd->pet_timer);
|
||||
kthread_stop(wdog_dd->watchdog_task);
|
||||
kfree(wdog_dd);
|
||||
@ -567,18 +531,22 @@ void msm_trigger_wdog_bite(void)
|
||||
__raw_readl(wdog_data->base + WDT0_BITE_TIME));
|
||||
}
|
||||
|
||||
static void print_wdog_data(struct msm_watchdog_data *wdog_dd)
|
||||
static irqreturn_t wdog_bark_handler(int irq, void *dev_id)
|
||||
{
|
||||
unsigned long long last_pet;
|
||||
struct msm_watchdog_data *wdog_dd = (struct msm_watchdog_data *)dev_id;
|
||||
unsigned long nanosec_rem;
|
||||
unsigned long long t = sched_clock();
|
||||
struct task_struct *wdog_task;
|
||||
int cpu;
|
||||
struct cpumask *bark_affinity;
|
||||
|
||||
last_pet = wdog_dd->last_pet;
|
||||
nanosec_rem = do_div(last_pet, 1000000000);
|
||||
nanosec_rem = do_div(t, 1000000000);
|
||||
dev_info(wdog_dd->dev, "Watchdog bark! Now = %lu.%06lu\n",
|
||||
(unsigned long) t, nanosec_rem / 1000);
|
||||
|
||||
nanosec_rem = do_div(wdog_dd->last_pet, 1000000000);
|
||||
dev_info(wdog_dd->dev, "Watchdog last pet at %lu.%06lu\n",
|
||||
(unsigned long) last_pet, nanosec_rem / 1000);
|
||||
(unsigned long) wdog_dd->last_pet, nanosec_rem / 1000);
|
||||
if (wdog_dd->do_ipi_ping)
|
||||
dump_cpu_alive_mask(wdog_dd);
|
||||
|
||||
@ -623,20 +591,7 @@ static void print_wdog_data(struct msm_watchdog_data *wdog_dd)
|
||||
/* Print watchdog bark IRQ affinity mask */
|
||||
bark_affinity = irq_get_affinity_mask(wdog_dd->bark_irq);
|
||||
dev_info(wdog_dd->dev, "Watchdog bark IRQ %d CPU affinity: %*pbl\n",
|
||||
wdog_dd->bark_irq, cpumask_pr_args(bark_affinity));
|
||||
}
|
||||
|
||||
static irqreturn_t wdog_bark_handler(int irq, void *dev_id)
|
||||
{
|
||||
struct msm_watchdog_data *wdog_dd = (struct msm_watchdog_data *)dev_id;
|
||||
unsigned long nanosec_rem;
|
||||
unsigned long long t = sched_clock();
|
||||
|
||||
nanosec_rem = do_div(t, 1000000000);
|
||||
dev_info(wdog_dd->dev, "Watchdog bark! Now = %lu.%06lu\n",
|
||||
(unsigned long) t, nanosec_rem / 1000);
|
||||
|
||||
print_wdog_data(wdog_dd);
|
||||
irq, cpumask_pr_args(bark_affinity));
|
||||
|
||||
msm_trigger_wdog_bite();
|
||||
panic("Failed to cause a watchdog bite! - Falling back to kernel panic!");
|
||||
@ -876,13 +831,6 @@ static void init_watchdog_data(struct msm_watchdog_data *wdog_dd)
|
||||
if (!ipi_en)
|
||||
cpu_pm_register_notifier(&wdog_cpu_pm_nb);
|
||||
dev_info(wdog_dd->dev, "MSM Watchdog Initialized\n");
|
||||
|
||||
init_timer(&wdog_dd->pet_observer);
|
||||
wdog_dd->pet_observer.data = (unsigned long)wdog_dd;
|
||||
wdog_dd->pet_observer.function = pet_observer_fn;
|
||||
wdog_dd->pet_observer.expires = msecs_to_jiffies(wdog_dd->bark_time +
|
||||
PET_OBSERVER_OFFSET_SECS);
|
||||
add_timer(&wdog_dd->pet_observer);
|
||||
}
|
||||
|
||||
static const struct of_device_id msm_wdog_match_table[] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user