ktest: Add check for bug or panic during reboot
Usually the target is booted into a dependable kernel when a test starts. The test will install the test kernel and reboot the box. But there may be a time that the kernel is running an unreliable kernel and the reboot may crash. Have ktest detect crashes on a reboot and force a power-cycle instead. This can usually happen if a test kernel was installed to run manual tests, but the user forgot to reboot to the known good kernel. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
Родитель
407b95b7a0
Коммит
8a80c72711
|
@ -1138,6 +1138,7 @@ sub reboot {
|
|||
if (defined($time)) {
|
||||
if (wait_for_monitor($time, $reboot_success_line)) {
|
||||
# reboot got stuck?
|
||||
doprint "Reboot did not finish. Forcing power cycle\n";
|
||||
run_command "$power_cycle";
|
||||
}
|
||||
end_monitor;
|
||||
|
@ -1235,6 +1236,9 @@ sub wait_for_monitor {
|
|||
my $line;
|
||||
my $booted = 0;
|
||||
my $start_time = time;
|
||||
my $skip_call_trace = 0;
|
||||
my $bug = 0;
|
||||
my $bug_ignored = 0;
|
||||
my $now;
|
||||
|
||||
doprint "** Wait for monitor to settle down **\n";
|
||||
|
@ -1251,6 +1255,28 @@ sub wait_for_monitor {
|
|||
$booted = 1;
|
||||
}
|
||||
|
||||
if ($full_line =~ /\[ backtrace testing \]/) {
|
||||
$skip_call_trace = 1;
|
||||
}
|
||||
|
||||
if ($full_line =~ /call trace:/i) {
|
||||
if (!$bug && !$skip_call_trace) {
|
||||
if ($ignore_errors) {
|
||||
$bug_ignored = 1;
|
||||
} else {
|
||||
$bug = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($full_line =~ /\[ end of backtrace testing \]/) {
|
||||
$skip_call_trace = 0;
|
||||
}
|
||||
|
||||
if ($full_line =~ /Kernel panic -/) {
|
||||
$bug = 1;
|
||||
}
|
||||
|
||||
if ($line =~ /\n/) {
|
||||
$full_line = "";
|
||||
}
|
||||
|
@ -1261,7 +1287,7 @@ sub wait_for_monitor {
|
|||
}
|
||||
}
|
||||
print "** Monitor flushed **\n";
|
||||
return 0;
|
||||
return $bug;
|
||||
}
|
||||
|
||||
sub save_logs {
|
||||
|
|
Загрузка…
Ссылка в новой задаче