I’m trying to get the TCO watchdog to work on i3-7100 on ASUS Desktop PC VivoMini VC66-B018Z (https://www.asus.com/us/Mini-PCs/VivoMini-VC66/).
I have attached the output of dmidecode to this email.
I’m using a homebrew linux distribution with linux kernel 4.9.22 and I have been using the TCO driver with this software stack on other hardware platforms without any issues.
On the Asus VC66 when insert the TCO watchdog driver I get the following logs:
[15321.181802] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[15321.181939] iTCO_wdt: Found a Intel PCH TCO device (Version=4, TCOBASE=0x0400)
[15321.182061] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
But then when I program a timeout and stop pinging the watchdog the unit does not reboot. Nothing happens, the unit continues to operates normally.
I have investigated and found out that the TCO_RLD register does not decrement.
When I cat /sys/class/watchdog/watchdog0/timeleft I always get the same value (the value that I programmed in timeout)
I have added a couple of prints in the driver to display the important TCO related registers in the set timeout function. Here are the values:
[ 7732.805330] iTCO_wdt: SMI_EN = 0x90002023
[ 7732.805335] iTCO_wdt: GC = 0x0
[ 7732.805338] iTCO_wdt: TCO_RLD = 0x32
[ 7732.805342] iTCO_wdt: TCO1_STS = 0x0
[ 7732.805346] iTCO_wdt: TCO2_STS = 0x0
[ 7732.805349] iTCO_wdt: TCO1_CNT = 0x1000
[ 7732.805353] iTCO_wdt: TCO2_CNT = 0x8
[ 7732.805357] iTCO_wdt: TCOv2_TMR = 0x32
When I check these values against the TCO spec they look good to me. (i.e.: NR bit is cleared in GC register, TCO_EN is set in SMI_EN register, TCO_TMR_HALT is cleared in TCO1_CNT)
Am I missing something?
Is there anything else that I could check to find out why the TCO timer is not counting down?
Can anyone help me with this issue?
Is it the appropriate forum for this question?