On 28/10/2024 13:31, Shuah Khan wrote:
On 10/27/24 22:02, Zhijian Li (Fujitsu) wrote:
On 28/10/2024 11:29, Shuah Khan wrote:
On 10/27/24 18:50, Zhijian Li (Fujitsu) wrote:
On 27/10/2024 08:28, Shuah Khan wrote:
On 10/24/24 19:39, Li Zhijian wrote:
Currently, watchdog-test keep running until it gets a SIGINT. However, when watchdog-test is executed from the kselftests framework, where it launches test via timeout which will send SIGTERM in time up. This could lead to 1. watchdog haven't stop, a watchdog reset is triggered to reboot the OS in silent. 2. kselftests gets an timeout exit code, and judge watchdog-test as 'not ok'
This test isn't really supposed to be run from kselftest framework. This is the reason why it isn't included in the default run.
May I know what's the default run, is it different from `make run_tests` ?
No it isn't. "make kselftest" runs only the targets mentioned in the selftests Makefile. That is considered the kselftest default run.
Hey, Shuah,
Thanks for your explanation. If that is the case, I do not have an urgent need for the current patch, expect I'd like to avoid the reboot issue after an accidentally `make run_tests`
Some changes are make as below, please take a look. I will send it out we reach a consensus.
commit 2296f9d88fde4921758a45bf160a7f1b9d4678a0 (HEAD) Author: Li Zhijian lizhijian@fujitsu.com Date: Mon Oct 28 11:54:03 2024 +0800
selftests/watchdog-test: Fix system accidentally reset after watchdog-test After `make run_tests` to run watchdog-test, a system reboot would happen due to watchdog not stop. ```
The system shouldn't reboot just because watchdog test is left running. watchdog test keeps calling ioctl() with WDIOC_KEEPALIVE to make sure the watchdog card timer is reset.
Err..
How watchdog test keep calling ioctl() with WDIOC_KEEPALIVE after ./watchdog_test has finished?
In my understanding, the cause is that, ./watchdog_test didn't goto neither A) 347 end: 348 /* 349 * Send specific magic character 'V' just in case Magic Close is 350 * enabled to ensure watchdog gets disabled on close. 351 */ 352 ret = write(fd, &v, 1); 353 if (ret < 0) 354 printf("Stopping watchdog ticks failed (%d)...\n", errno);
nor B)
68 static void term(int sig) 69 { 70 int ret = write(fd, &v, 1); 71 72 close(fd); 73 if (ret < 0) 74 printf("\nStopping watchdog ticks failed (%d)...\n", errno); 75 else 76 printf("\nStopping watchdog ticks...\n"); 77 exit(0); 78 }
to "ensure watchdog gets disabled on close"
The timeout default signal is SIGTERM, watchdog_test only registered SIGINT handler.
Thanks Zhijian
If you are seeing reboots, that means watchdog test couldn't reset the timer. This usually mean system is unresponsive or something is wrong with the watchdog card on your system.
This is the behavior you would expect from a watchdog timer. Does your system have a watchdog card ot or you enabling softdog module?
Either way there is some other reason for the system reboot.
thanks, -- Shuah