experimental qemu update, please test! (was: [FIX] QEMU and ACPI)
Juergen Lock
nox at jelal.kn-bremen.de
Thu Feb 1 23:18:50 UTC 2007
On Thu, Feb 01, 2007 at 03:02:53PM -0500, Jung-uk Kim wrote:
> You may have noticed recent QEMU does not boot FreeBSD/amd64 SMP guest
> on FreeBSD/amd64 -CURRENT host (i.e., you may have seen 'invalid RSDT
> checksum' error while booting). That is because the QEMU BIOS (which
> is actually Bochs BIOS with little modification) has a little bug in
> it. If you experience the issue, grab a file from here:
>
> http://people.freebsd.org/~jkim/qemu-bios.bin
>
> and replace /usr/local/share/qemu/bios.bin with it. The QEMU patch
> against Bochs BIOS is here:
>
> http://people.freebsd.org/~jkim/qemu-bios.diff
>
> Basically it wasn't clearing RSDT before checksum calculation. ;-)
Ok I have prepared a qemu port update that includes this, please test
before I commit it:
Removed files: files/patch-slirp-udp.c files/patch-vl.h files/patch-sdl.c
News files: files/patch-x_keymap.c
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.67
diff -u -r1.67 Makefile
--- Makefile 31 Jan 2007 23:20:53 -0000 1.67
+++ Makefile 1 Feb 2007 22:16:35 -0000
@@ -6,17 +6,18 @@
#
PORTNAME= qemu
-PORTVERSION= 0.8.2s.20070111
-PORTREVISION= 1
+PORTVERSION= 0.8.2s.20070201
CATEGORIES= emulators
MASTER_SITES= http://www.qemu.org/:release \
http://qemu-forum.ipi.fi/qemu-snapshots/:snapshot \
http://people.fruitsalad.org/nox/qemu/:snapshot \
http://www.volny.cz/xnavara/qemu/:snapshot \
http://people.brandeis.edu/~jcoiner/qemu_idedma/:idedma \
- http://people.freebsd.org/~maho/qemu/:misc
-DISTNAME= ${PORTNAME}-snapshot-2007-01-11_05
-DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:snapshot
+ http://people.freebsd.org/~maho/qemu/:misc \
+ http://people.freebsd.org/~jkim/:bios
+DISTNAME= ${PORTNAME}-snapshot-2007-02-01_05
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:snapshot \
+ qemu-bios.bin:bios
DIST_SUBDIR= qemu
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
@@ -81,6 +82,7 @@
@${MKDIR} ${WRKSRC}/kqemu
@${TOUCH} ${WRKSRC}/kqemu/Makefile
@${ECHO} all: > ${WRKSRC}/kqemu/Makefile.freebsd
+ @${CP} -p ${_DISTDIR}/qemu-bios.bin ${WRKSRC}/pc-bios/bios.bin
pre-patch:
@for A in ${ONLY_FOR_ARCHS}; do \
Index: distinfo
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/distinfo,v
retrieving revision 1.39
diff -u -r1.39 distinfo
--- distinfo 12 Jan 2007 00:13:58 -0000 1.39
+++ distinfo 1 Feb 2007 22:11:53 -0000
@@ -1,6 +1,9 @@
-MD5 (qemu/qemu-snapshot-2007-01-11_05.tar.bz2) = 6b183198ea932853664edbff595579c7
-SHA256 (qemu/qemu-snapshot-2007-01-11_05.tar.bz2) = 4020ae33a58fba1a205c77a70fce21ba8e1843adcb8bedcabfbc7f84c53b35a1
-SIZE (qemu/qemu-snapshot-2007-01-11_05.tar.bz2) = 1576375
+MD5 (qemu/qemu-snapshot-2007-02-01_05.tar.bz2) = 89d97d0a6a87fb4a5a572c5b511fbac0
+SHA256 (qemu/qemu-snapshot-2007-02-01_05.tar.bz2) = dc5d20e99da3537c11bf86e291c1ca709172955e3c77bed1539978bd0ba7ec3f
+SIZE (qemu/qemu-snapshot-2007-02-01_05.tar.bz2) = 1632792
+MD5 (qemu/qemu-bios.bin) = 4ce1a0864d556974cc5364dc55aa1597
+SHA256 (qemu/qemu-bios.bin) = 90c8c3e38021a1a1323860c376747d21ae0d3841aa57598aed3ef8e3126285a0
+SIZE (qemu/qemu-bios.bin) = 131072
MD5 (qemu/patch3_cirrus) = ebe7ed9fce804c49e024bc93bfdfc810
SHA256 (qemu/patch3_cirrus) = e862371834b7d895a896fbdb84fd9f70d17b5729a6f6789a48a61504fc941e11
SIZE (qemu/patch3_cirrus) = 8817
Index: files/patch-bsdusb.patch
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-bsdusb.patch,v
retrieving revision 1.6
diff -u -r1.6 patch-bsdusb.patch
--- files/patch-bsdusb.patch 17 Dec 2006 00:22:36 -0000 1.6
+++ files/patch-bsdusb.patch 1 Feb 2007 20:38:44 -0000
@@ -1,13 +1,13 @@
Index: qemu/configure
-@@ -134,6 +134,7 @@
+@@ -139,6 +139,7 @@
oss="yes"
linux="yes"
- user="yes"
+ linux_user="yes"
+usb="linux"
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
kqemu="yes"
fi
-@@ -143,6 +144,7 @@
+@@ -148,6 +149,7 @@
if [ "$bsd" = "yes" ] ; then
if [ "$darwin" != "yes" ] ; then
make="gmake"
@@ -15,7 +15,7 @@
fi
fi
-@@ -724,6 +726,19 @@
+@@ -786,6 +788,19 @@
fi
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
Index: files/patch-osdep.c
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-osdep.c,v
retrieving revision 1.1
diff -u -r1.1 patch-osdep.c
--- files/patch-osdep.c 5 May 2005 12:41:10 -0000 1.1
+++ files/patch-osdep.c 1 Feb 2007 21:10:45 -0000
@@ -1,7 +1,7 @@
Index: qemu/osdep.c
-@@ -323,7 +323,9 @@
+@@ -79,7 +79,9 @@
- #elif defined(USE_KQEMU)
+ #if defined(USE_KQEMU)
+#ifndef __FreeBSD__
#include <sys/vfs.h>
@@ -9,15 +9,15 @@
#include <sys/mman.h>
#include <fcntl.h>
-@@ -334,6 +336,7 @@
+@@ -90,6 +92,7 @@
const char *tmpdir;
char phys_ram_file[1024];
void *ptr;
+#ifndef __FreeBSD__
- struct statfs stfs;
-
- if (phys_ram_fd < 0) {
-@@ -389,12 +392,20 @@
+ #ifdef HOST_SOLARIS
+ struct statvfs stfs;
+ #else
+@@ -151,12 +154,20 @@
}
unlink(phys_ram_file);
}
Index: files/patch-sdl.c
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-sdl.c,v
retrieving revision 1.5
diff -u -r1.5 patch-sdl.c
--- files/patch-sdl.c 26 Dec 2006 22:41:13 -0000 1.5
+++ files/patch-sdl.c 1 Feb 2007 21:54:07 -0000
@@ -1,14 +0,0 @@
-Index: qemu/sdl.c
-@@ -115,9 +115,9 @@
- 0xb5, /* 112 Divide */
- 0xb8, /* 113 Alt-R */
- 0xc6, /* 114 Break */
-- 0x0, /* 115 */
-- 0x0, /* 116 */
-- 0x0, /* 117 */
-+ 0xdb, /* 115 windows left button */
-+ 0xdc, /* 116 windows right button */
-+ 0xdd, /* 117 right menu button */
- 0x0, /* 118 */
- 0x0, /* 119 */
- 0x70, /* 120 Hiragana_Katakana */
Index: files/patch-slirp-udp.c
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-slirp-udp.c,v
retrieving revision 1.1
diff -u -r1.1 patch-slirp-udp.c
--- files/patch-slirp-udp.c 12 Jan 2007 00:13:58 -0000 1.1
+++ files/patch-slirp-udp.c 1 Feb 2007 21:54:07 -0000
@@ -1,26 +0,0 @@
-Index: qemu/slirp/udp.c
-@@ -205,8 +208,6 @@
- /* udp_last_so = so; */
- so->so_laddr = ip->ip_src;
- so->so_lport = uh->uh_sport;
-- so->so_faddr = ip->ip_dst; /* XXX */
-- so->so_fport = uh->uh_dport; /* XXX */
-
- if ((so->so_iptos = udp_tos(so)) == 0)
- so->so_iptos = ip->ip_tos;
-@@ -216,6 +217,15 @@
- * and if it is, do the fork_exec() etc.
- */
- }
-+
-+ /*
-+ * Assign destination unconditionally
-+ *
-+ * This fixes the case where packets are sent from the same
-+ * source ip/port to different destination ips/ports
-+ */
-+ so->so_faddr = ip->ip_dst; /* XXX */
-+ so->so_fport = uh->uh_dport; /* XXX */
-
- iphlen += sizeof(struct udphdr);
- m->m_len -= iphlen;
Index: files/patch-vl.c-ppbus
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-vl.c-ppbus,v
retrieving revision 1.1
diff -u -r1.1 patch-vl.c-ppbus
--- files/patch-vl.c-ppbus 21 Aug 2006 23:02:01 -0000 1.1
+++ files/patch-vl.c-ppbus 1 Feb 2007 21:05:43 -0000
@@ -9,7 +9,7 @@
#endif
#else
#ifndef __sun__
-@@ -1728,7 +1730,65 @@
+@@ -1728,7 +1730,64 @@
chr->chr_ioctl = pp_ioctl;
return chr;
}
@@ -68,7 +68,6 @@
+ }
+ chr->opaque = (void *)fd;
+ chr->chr_write = null_chr_write;
-+ chr->chr_add_read_handler = null_chr_add_read_handler;
+ chr->chr_ioctl = pp_ioctl;
+ return chr;
+}
Index: files/patch-vl.h
===================================================================
RCS file: /home/pcvs/ports/emulators/qemu/files/patch-vl.h,v
retrieving revision 1.1
diff -u -r1.1 patch-vl.h
--- files/patch-vl.h 31 Oct 2006 22:55:34 -0000 1.1
+++ files/patch-vl.h 1 Feb 2007 21:54:07 -0000
@@ -1,12 +0,0 @@
-Index: qemu/vl.h
-@@ -73,6 +73,10 @@
- #define PRIo64 "I64o"
- #endif
-
-+#ifndef ENOMEDIUM
-+#define ENOMEDIUM 4097
-+#endif
-+
- #ifdef QEMU_TOOL
-
- /* we use QEMU_TOOL in the command line tools which do not depend on
Index: files/patch-x_keymap.c
@@ -0,0 +1,14 @@
+Index: qemu/x_keymap.c
+@@ -41,9 +41,9 @@
+ 0xb5, /* 112 Divide */
+ 0xb8, /* 113 Alt-R */
+ 0xc6, /* 114 Break */
+- 0x0, /* 115 */
+- 0x0, /* 116 */
+- 0x0, /* 117 */
++ 0xdb, /* 115 left windows key */
++ 0xdc, /* 116 right windows key */
++ 0xdd, /* 117 right menu key */
+ 0x0, /* 118 */
+ 0x0, /* 119 */
+ 0x0, /* 120 */
More information about the freebsd-emulation
mailing list