@@ -444,9 +444,11 @@ class QemuRunner:
self.logger.debug("Waiting at most %d seconds for login banner (%s)" %
(self.boottime, time.strftime("%D %H:%M:%S")))
endtime = time.time() + self.boottime
+ newlinetime = time.time() + 120
filelist = [self.server_socket, self.runqemu.stdout]
reachedlogin = False
stopread = False
+ sentnewlines = False
qemusock = None
bootlog = b''
data = b''
@@ -455,6 +457,13 @@ class QemuRunner:
sread, swrite, serror = select.select(filelist, [], [], 5)
except InterruptedError:
continue
+ # With the 6.5 kernel, the serial port getty sometimes fails to appear, the data
+ # appears lost in some buffer somewhere. Wait two minutes, then if we've not had a login,
+ # try and provoke one. This is a workaround until we can work out the root cause.
+ if time.time() > newlinetime and not sentnewlines:
+ self.logger.warning('Probing the serial port to wake it up!')
+ self.server_socket.sendall(bytes("\n\n", "utf-8"))
+ sentnewlines = True
for file in sread:
if file is self.server_socket:
qemusock, addr = self.server_socket.accept()
We're struggling with the 6.5 kernel as the serial port getty doesn't appears sometimes leading to failures in CI. Add a workaround of sending some newlines as a way of unblocking the kernel/release issues whilst we try and work out how to get to the bottom of the issue. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/lib/oeqa/utils/qemurunner.py | 9 +++++++++ 1 file changed, 9 insertions(+)