mirror of
https://git.yoctoproject.org/poky
synced 2026-03-06 15:29:40 +01:00
oeqa/qemurunner: Add newlines serial workaround
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. (From OE-Core rev: 0a65f0d272895ba13c8c133ee71f3605d765a8a7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -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,16 @@ 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!')
|
||||
try:
|
||||
self.server_socket.sendall(bytes("\n\n", "utf-8"))
|
||||
except BrokenPipeError as e:
|
||||
self.logger.debug('Probe failed %s' % repr(e))
|
||||
sentnewlines = True
|
||||
for file in sread:
|
||||
if file is self.server_socket:
|
||||
qemusock, addr = self.server_socket.accept()
|
||||
|
||||
Reference in New Issue
Block a user