watchdog_data
static struct watchdog_data watchdog_data = {
.lock = __RAW_SPIN_LOCK_UNLOCKED(watchdog_data.lock),
guard(raw_spinlock)(&watchdog_data.lock);
watchdog_data.result = WD_CPU_TIMEOUT;
watchdog_data.result = WD_CPU_TIMEOUT;
scoped_guard(raw_spinlock_irq, &watchdog_data.lock) {
watchdog_data.result = wd->result;
memcpy(watchdog_data.cpu_ts, wd->cpu_ts, sizeof(wd->cpu_ts));
unsigned int cpu = watchdog_data.curr_cpu;
watchdog_data.curr_cpu = cpu;
watchdog_data.result = WD_SUCCESS;
watchdog_data.result = WD_FREQ_NO_WATCHDOG;
watchdog_data.wd_seq = wd_seq;
watchdog_data.wd_delta = wd_delta;
watchdog_data.cs_delta = cs_delta;
watchdog_data.result = WD_FREQ_SKEWED;
watchdog_data.result = WD_FREQ_TIMEOUT;
watchdog_data.result = WD_FREQ_RESET;
watchdog->name, watchdog_data.wd_seq);
pr_warn("Watchdog %20s interval: %16lluns\n", watchdog->name, watchdog_data.wd_delta);
pr_warn("Clocksource %20s interval: %16lluns\n", cs->name, watchdog_data.cs_delta);
pr_info_once("Watchdog remote CPU %u read timed out\n", watchdog_data.curr_cpu);
if (watchdog_data.cpu_ts[0] < watchdog_data.cpu_ts[1]) {
watchdog_data.cpu_ts[0], watchdog_data.curr_cpu, watchdog_data.cpu_ts[1]);
pr_warn("CPU%u %16llu < CPU%u %16llu (cycles)\n", watchdog_data.curr_cpu,
watchdog_data.cpu_ts[1], smp_processor_id(), watchdog_data.cpu_ts[0]);
switch (watchdog_data.result) {