Skip site navigation (1)Skip section navigation (2)
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>