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
|