Document requisite patch for qemu
authorMichael Brown <mcb30@etherboot.org>
Mon, 28 Aug 2006 01:58:52 +0000 (01:58 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 28 Aug 2006 01:58:52 +0000 (01:58 +0000)
contrib/bochs/README.qemu
contrib/bochs/qemu-patch [new file with mode: 0644]

index ae2984c..e72c884 100644 (file)
@@ -14,14 +14,21 @@ To get qemu running is fairly simple:
       cvs -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu \
            co qemu
 
+2a. Patch the qemu code.  There is currently a bug that causes qemu to
+    execute Etherboot incredibly slowly.  The bug seems to be related
+    to the relative prioritisation of CPU and I/O operations within
+    qemu.  This patch (which I found via Google) isn't a proper fix,
+    but it does work around the problem:
+      patch -p0 < qemu-patch
+
 3.  Configure qemu with
       pushd qemu
-      ./configure --enable-system --enable-profiler 
+      ./configure --enable-system
       popd
 
-      Note that qemu will not compile with gcc4; if your system's
-      default compiler is gcc4 then specify the path to gcc3 using
-      e.g. --cc=gcc-3.3.6
+    Note that qemu will not compile with gcc4; if your system's
+    default compiler is gcc4 then specify the path to gcc3 using
+    e.g. --cc=gcc-3.3.6
 
 4.  Build qemu:
       make -C qemu
@@ -52,6 +59,7 @@ To get qemu running is fairly simple:
       popd
 
 9.  Start qemu
+      export SDL_VIDEO_X11_DGAMOUSE=0
       ./qemu/i386-softmmu/qemu -L qemu/pc-bios \
                               -net nic,model=rtl8139 -net tap,ifname=tap0 \
                               -boot a -fda ../../src/bin/rtl8139.dsk 
diff --git a/contrib/bochs/qemu-patch b/contrib/bochs/qemu-patch
new file mode 100644 (file)
index 0000000..5fb6c09
--- /dev/null
@@ -0,0 +1,26 @@
+Index: qemu/cpu-exec.c
+===================================================================
+RCS file: /sources/qemu/qemu/cpu-exec.c,v
+retrieving revision 1.84
+diff -u -r1.84 cpu-exec.c
+--- qemu/cpu-exec.c    29 Jul 2006 19:09:31 -0000      1.84
++++ qemu/cpu-exec.c    28 Aug 2006 01:54:15 -0000
+@@ -788,6 +788,18 @@
+                     cpu_loop_exit();
+                 }
+ #endif
++#if 1
++#define MIN_CYCLE_COUNT 100
++              {
++                    static int cycle_count;
++                
++                  if (++cycle_count > MIN_CYCLE_COUNT) {
++                        cycle_count = 0;
++                        env->exception_index = EXCP_INTERRUPT;
++                        cpu_loop_exit();
++                    }
++              }
++#endif
+             }
+         } else {
+             env_to_regs();