Date: Fri, 2 Feb 2007 00:17:17 +0100 From: Juergen Lock <nox@jelal.kn-bremen.de> To: Jung-uk Kim <jkim@FreeBSD.org> Cc: freebsd-emulation@FreeBSD.org Subject: experimental qemu update, please test! (was: [FIX] QEMU and ACPI) Message-ID: <20070201231717.GA84018@saturn.kn-bremen.de> In-Reply-To: <200702011502.56443.jkim@FreeBSD.org> References: <200702011502.56443.jkim@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070201231717.GA84018>