On Thu, Oct 20, 2022 at 6:20 AM Peter Maydell <peter.mayd...@linaro.org> wrote: > > The avocado test > tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_raspi2_initrd > finishes wiith > > exec_command(self, 'halt') > # Wait for VM to shut down gracefully > self.vm.wait() > > In theory this should be fine. In practice it runs into two bugs: > > * when the test calls self.vm.wait() Avocado closes the socket > connection to the guest serial console immediately, so the > avocado logs don't have the last part of the guest output: > https://gitlab.com/qemu-project/qemu/-/issues/1265 > * when the socket is closed, a bug in the QEMU socket chardev > means that it loses any data that the guest UART has not > yet consumed. This means that the guest doesn't always read > the full 'halt' command string, so the test intermittently > fails with a timeout: > https://gitlab.com/qemu-project/qemu/-/issues/1264 > > Work around both of these by waiting for the guest to print the > string that means it has completed the shutdown process. This fixes > a very long standing intermittent failure in this test. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/636 > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > tests/avocado/boot_linux_console.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/avocado/boot_linux_console.py > b/tests/avocado/boot_linux_console.py > index ca9d09b0d7c..eed4b49e6e4 100644 > --- a/tests/avocado/boot_linux_console.py > +++ b/tests/avocado/boot_linux_console.py > @@ -489,7 +489,7 @@ def test_arm_raspi2_initrd(self): > 'BCM2835') > exec_command_and_wait_for_pattern(self, 'cat /proc/iomem', > '/soc/cprman@7e101000') > - exec_command(self, 'halt') > + exec_command_and_wait_for_pattern(self, 'halt', 'reboot: System > halted') > # Wait for VM to shut down gracefully > self.vm.wait()
LGTM! Already staged, but just for formality's sake: Reviewed-by: John Snow <js...@redhat.com>