LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Kernel (https://www.linuxquestions.org/questions/linux-kernel-70/)
-   -   how to find last reboot caused by TCO watchdog (https://www.linuxquestions.org/questions/linux-kernel-70/how-to-find-last-reboot-caused-by-tco-watchdog-4175663885/)

Arul Jeniston 11-07-2019 09:43 PM

how to find last reboot caused by TCO watchdog
 
hi Team,

We use intel TCO hardware watchdog to recover the system from unexpected software hangs and hardware issues.
We have a requirement to show TCO watchdog caused last reboot.
Intel spec says, TCO1_STS and TCO2_STS register has the bits set if watchdog resets the CPU. We do observe the same in our testing.
But during iTCO driver initialization in iTCO_wdt_probe(). This puts a limitation in reading the reason for previous reboot.

- Is there any other way to find previous reboot caused by watchdog?

- Can be the value of TCO_STS registers saved in RAM before clearing it? This would help us to find that the cpu was reset by watchdog during previous run.

static int iTCO_wdt_probe(struct platform_device *pdev)
{
...
...
switch (p->iTCO_version) {
case 5:
case 4:
outw(0x0008, TCO1_STS(p)); /* Clear the Time Out Status bit */
outw(0x0002, TCO2_STS(p)); /* Clear SECOND_TO_STS bit */
break;
case 3:
outl(0x20008, TCO1_STS(p));
break;
case 2:
case 1:
default:
outw(0x0008, TCO1_STS(p)); /* Clear the Time Out Status bit */
outw(0x0002, TCO2_STS(p)); /* Clear SECOND_TO_STS bit */
outw(0x0004, TCO2_STS(p)); /* Clear BOOT_STS bit */
break;
}

Thanks and Regards,
Arul


All times are GMT -5. The time now is 11:39 AM.