Bug#1003002: some more information - possible solution

2022-12-07 Thread Christian Kastner
On 2022-12-05 22:22, Maximilian Engelhardt wrote:
> I did some tests and can confirm that your patch fixes this problem for me.

Thanks for checking! MR filed.



Bug#1003002: some more information - possible solution

2022-12-05 Thread Maximilian Engelhardt
On Sonntag, 4. Dezember 2022 01:42:14 CET Christian Kastner wrote:
> Can anyone else give this patch a try before I submit an MR?

Uh, this is great news and an easy fix.

I did some tests and can confirm that your patch fixes this problem for me.



signature.asc
Description: This is a digitally signed message part.


Bug#1003002: some more information - possible solution

2022-12-03 Thread Christian Kastner
On 2022-12-03 11:14, Christian Kastner wrote:
> I'm also leaning towards a race, but the question is whether this is
> really a potential bug, or whether determinism is assumed where none is
> guaranteed (similar to the issue of storage devices like sda and sdb
> being non-deterministic).

I may have stumbled over a trivial solution.

Looking at Maximilian's test cases, I noticed that -device virtio-serial
was being specified multiple times. From other docs, I gather it's only
needed once, even with multiple devices.

The attached patch reduces this to one instance, and this fixes the
issue for me.

I ran a series of tests with armhf/arm64, various CPU counts, and all
went well. armhf with 4 CPUs initially failed but from using the
--show-boot option, it was evident that the boot process was just slower
(long time spent in GRUB), and with increasing --timeout=120, that
worked, too.

With Maximilian's experiments showing that the console count was
shifted, I guess that multiple -device virtio-serial somehow confuses
internal QEMU ordering, although I don't know why this would be an issue
only with kernels > 5.10.

Can anyone else give this patch a try before I submit an MR?

Best,
ChristianIndex: autopkgtest-5.27/lib/autopkgtest_qemu.py
===
--- autopkgtest-5.27.orig/lib/autopkgtest_qemu.py
+++ autopkgtest-5.27/lib/autopkgtest_qemu.py
@@ -368,12 +368,15 @@ class Qemu:
 'unix:%s,server=on,wait=off' % self.get_socket_path('hvc0'),
 ])
 else:
+if hvc == 'hvc0' or self.qemu_architecture == 'ppc64le':
+argv.extend([
+'-device', 'virtio-serial',
+])
 argv.extend([
 '-chardev',
 'socket,path=%s,server=on,wait=off,id=%s' % (
 self.get_socket_path(hvc), hvc,
 ),
-'-device', 'virtio-serial',
 '-device', 'virtconsole,chardev=%s' % hvc,
 ])