summary refs log tree commit diff stats
path: root/results/classifier/105/vnc/1693649
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/105/vnc/1693649')
-rw-r--r--results/classifier/105/vnc/1693649103
1 files changed, 103 insertions, 0 deletions
diff --git a/results/classifier/105/vnc/1693649 b/results/classifier/105/vnc/1693649
new file mode 100644
index 000000000..6f14e6fa9
--- /dev/null
+++ b/results/classifier/105/vnc/1693649
@@ -0,0 +1,103 @@
+vnc: 0.915
+other: 0.896
+KVM: 0.880
+assembly: 0.873
+device: 0.848
+semantic: 0.844
+mistranslation: 0.839
+graphic: 0.838
+boot: 0.821
+network: 0.808
+instruction: 0.803
+socket: 0.772
+
+x86 pause misbehaves with -cpu haswell
+
+Using qemu-2.9.0
+
+When booting NetBSD using '-cpu haswell -smp 4', the system fails to initialize the additional CPUs.  It appears as though the "application processor" enters routine x86_pause() but never returns.  
+
+x86_pause() is simply two assembler instructions: 'pause; ret;'
+
+Replacing the routine with 'nop; nop; ret;' allows the system to proceed, of course without the benefit of the pause instruction on spin-loops!
+
+Additionally, booting with '-cpu phenom -smp 4' also works, although the system does seem confused about the type of CPU being used.
+
+Further investigation shows that pause may be working, but very very slowly.
+
+The "use-case" in NetBSD is for "hatching" application CPUs.  The target CPU runs a loop that does
+
+    while (flag_1 not set)
+        for (i = 0; i < 10000; i++)
+            x86_pause();                 /* which is assembly code:  "pause; ret;" */
+    ...
+    set flag_2;
+    return;
+
+The boot CPU executes the following code for each application CPU:
+
+    set flag_1;
+    for (i = 0; i < 100000 && flag_2 not set; i++)
+        i8254_delay(10);             /* this should be 10usec per iteration, 1.0 sec total */
+    if (flag_2 not set)
+        panic(cpu did not hatch);
+    ....
+
+So, the 10k executions of x86_pause are taking in excess of 1 sec to complete.  Indeed, reducing that constant value from 10k to only 100 results in the same failure.  So it would seem that the pause instruction is taking an extremely long time to complete.  (Further reducing the interation count to only 50 results in success, although it "feels" very sluggish.)
+
+
+Can you still reproduce this issue with the latest version of QEMU (currently 5.0)?
+
+Seems ok now.
+
+On Fri, 22 May 2020, Thomas Huth wrote:
+
+> Can you still reproduce this issue with the latest version of QEMU
+> (currently 5.0)?
+>
+> ** Changed in: qemu
+>       Status: New => Incomplete
+>
+> -- 
+> You received this bug notification because you are subscribed to the bug
+> report.
+> https://bugs.launchpad.net/bugs/1693649
+>
+> Title:
+>  x86 pause misbehaves with -cpu haswell
+>
+> Status in QEMU:
+>  Incomplete
+>
+> Bug description:
+>  Using qemu-2.9.0
+>
+>  When booting NetBSD using '-cpu haswell -smp 4', the system fails to
+>  initialize the additional CPUs.  It appears as though the "application
+>  processor" enters routine x86_pause() but never returns.
+>
+>  x86_pause() is simply two assembler instructions: 'pause; ret;'
+>
+>  Replacing the routine with 'nop; nop; ret;' allows the system to
+>  proceed, of course without the benefit of the pause instruction on
+>  spin-loops!
+>
+>  Additionally, booting with '-cpu phenom -smp 4' also works, although
+>  the system does seem confused about the type of CPU being used.
+>
+> To manage notifications about this bug go to:
+> https://bugs.launchpad.net/qemu/+bug/1693649/+subscriptions
+>
+> !DSPAM:5ec7625658281532840571!
+>
+>
+
++--------------------+--------------------------+-----------------------+
+| Paul Goyette       | PGP Key fingerprint:     | E-mail addresses:     |
+| (Retired)          | FA29 0E3B 35AF E8AE 6651 | <email address hidden>     |
+| Software Developer | 0786 F758 55DE 53BA 7731 | <email address hidden>   |
++--------------------+--------------------------+-----------------------+
+
+
+Ok, thanks for checking again! So I'm closing this ticket now.
+