ktest: Stop dropping console output during power-cycle reboot

The POWER_CYCLE fallback added to reboot() flushes monitor output at the
wrong time. In the untimed reboot path, flushing immediately after
start_monitor() can consume the first output from the new boot before
monitor() begins reading it. In the timed path, flushing after POWER_CYCLE
can eat the "Linux version" banner or REBOOT_SUCCESS_LINE from the new
kernel.

That makes ktest miss the boot it is waiting for and can trigger an
unnecessary second power cycle.

Start the monitor before POWER_CYCLE so the reference counting stays
balanced, but only flush when reboot() was asked to wait for a timed
reboot. Perform that flush before issuing POWER_CYCLE so it drains stale
output from the old kernel instead of consuming the next boot.

Cc: John Hawley <warthog9@eaglescrag.net>
Cc: Andrea Righi <arighi@nvidia.com>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>
Cc: Matthieu Baerts <matttbe@kernel.org>
Cc: Fernando Fernandez Mancera <fmancera@suse.de>
Cc: Pedro Falcato <pfalcato@suse.de>
Link: https://patch.msgid.link/20260307-ktest-fixes-v1-6-565d412f4925@suse.com
Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
Ricardo B. Marlière 2026-03-07 19:08:01 -03:00 committed by Steven Rostedt
parent fcfc25725a
commit eae247f65d

View File

@ -1499,12 +1499,13 @@ sub reboot {
}
if ($powercycle) {
run_command "$power_cycle";
start_monitor;
# flush out current monitor
# May contain the reboot success line
wait_for_monitor 1;
if (defined($time)) {
# Flush stale console output from the old kernel before power-cycling.
wait_for_monitor 1;
}
run_command "$power_cycle";
} else {
# Make sure everything has been written to disk