From 6e5ffefd79db740a66e165696663dad28e458cf9 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 28 Aug 2006 01:58:52 +0000 Subject: [PATCH] Document requisite patch for qemu --- contrib/bochs/README.qemu | 16 ++++++++++++---- contrib/bochs/qemu-patch | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 contrib/bochs/qemu-patch diff --git a/contrib/bochs/README.qemu b/contrib/bochs/README.qemu index ae2984ca..e72c8841 100644 --- a/contrib/bochs/README.qemu +++ b/contrib/bochs/README.qemu @@ -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 index 00000000..5fb6c09e --- /dev/null +++ b/contrib/bochs/qemu-patch @@ -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();