Mon May 17 14:31:07 2010 UTC ()
Update qemu to 0.12.4. Okay'ed by wiz@, in PR pkg/43311 filed by me.

---
version 0.12.4:

 - Workaround for broken OSS_GETVERSION on FreeBSD, part two (Juergen Lock)
 - oss: fix fragment setting (malc)
 - oss: issue OSS_GETVERSION ioctl only when needed (malc)
 - oss: refactor code around policy setting (malc)
 - oss: workaround for cases when OSS_GETVERSION is not defined (malc)
 - block: Free iovec arrays allocated by multiwrite_merge() (Stefan Hajnoczi)
 - lsi: fix segfault in lsi_command_complete (Gerd Hoffmann)
 - lsi: pass lsi_request to lsi_reselect (Gerd Hoffmann)
 - lsi: move dma_len+dma_buf into lsi_request (Gerd Hoffmann)
 - lsi: move current_dev into lsi_request (Gerd Hoffmann)
 - lsi: have lsi_request for the whole life time of the request. (Gerd Hoffmann)
 - lsi: use QTAILQ for lsi_queue (Gerd Hoffmann)
 - tcp/mips: Change TCG_AREG0 (fp -> s0) (Stefan Weil)
 - sh_pci: fix memory and I/O access (Aurelien Jarno)
 - Fix incoming migration with iothread (Marcelo Tosatti)
 - Fix SIGFPE for vnc display of width/height = 1 (Chris Webb)
 - net: remove broken net_set_boot_mask() boot device validation (Eduardo Habkost)
 - qcow2: Remove request from in-flight list after error (Kevin Wolf)
 - qcow2: Don't ignore immediate read/write failures (Kevin Wolf)
 - block: Fix multiwrite memory leak in error case (Kevin Wolf)
 - block: Fix error code in multiwrite for immediate failures (Kevin Wolf)
 - block: Fix multiwrite error handling (Kevin Wolf)
 - scsi-disk: fix buffer overflow (Gerd Hoffmann)
 - qcow2: Rewrite alloc_refcount_block/grow_refcount_table (Kevin Wolf)
 - qcow2: Factor next_refcount_table_size out (Kevin Wolf)
 - block: avoid creating too large iovecs in multiwrite_merge (Christoph Hellwig)
 - json-parser: Fix segfault on malformed input (Kevin Wolf)
 - linux-user: switch default ppc64 CPU to 970fx from 970 (Aurelien Jarno)
 - target-sh4: MMU: fix store queue addresses (Aurelien Jarno)
 - target-sh4: MMU: fix ITLB priviledge check (Aurelien Jarno)
 - target-sh4: MMU: fix mem_idx computation (Aurelien Jarno)
 - sh7750: handle MMUCR TI bit (Aurelien Jarno)
 - UHCI spurious interrut fix (Paul Brook)
 - tcg/mips: fix branch offset during retranslation (Aurelien Jarno)
 - tcg/arm: correctly save/restore registers in prologue/epilogue (Aurelien Jarno)
 - workaround for cmd646 bmdma register access while no dma is active (Igor V. Kovalenko)
 - Fix corner case in chardev udp: parameter (Jan Kiszka)
 - Don't set default monitor when there is a mux'ed one (Jan Kiszka)
 - spelling typo (compatibilty) in hw/fw_cfg.c (Vagrant Cascadian)
 - fdc: fix drive property handling. (Gerd Hoffmann)
 - target-i386: fix commit c22549204a6edc431e8e4358e61bd56386ff6957 (TeLeMan)
 - target-i386: fix SIB decoding with index = 4 (Aurelien Jarno)
 - Fix segfault with ram_size > 4095M without kvm (Ryan Harper)
 - target-i386: Fix long jumps/calls in long mode with REX.W set (malc)
 - target-i386: fix lddqu SSE instruction (Aurelien Jarno)
 - qemu-char.c: drop debug printfs from qemu_chr_parse_compat (Jan Kiszka)
 - fix undefined shifts by >32 (Paolo Bonzini)
 - Fix qemu -net user,hostfwd= example (Aurelien Jarno)

---

Also add a patch for e1000.c NIC to make wm(4) work on NetBSD guest:
---
 * Reset EEPROM internal state on CS rise edge,
   not SK rise edge during CS is low, per CS pin description in
   the FM93C06 EEPROM manual:
    "... a rising edge on this signal is required to reset the
     internal state-machine to accept a new cycle ..."
   Intel's em driver seems to explicitly raise and lower SK output
   after CS is negated in em_standby_eeprom() so many other OSes
   that use Intel's driver don't have this problem, but I can't find
   articles that say the MICROWIRE or EEPROM spec requires such sequence.
 * It isn't a good idea to use memset(,0,) to clear EEPROM state values,
   so explicitly clear status members and preserve the previous EECD values
---
This patch is also filed as upstream QEMU bugs #581737.

While here, several tweaks in Makefile to appease pkglint.


(tsutsui)
diff -r1.66 -r1.67 pkgsrc/emulators/qemu/Makefile
diff -r1.54 -r1.55 pkgsrc/emulators/qemu/distinfo
diff -r0 -r1.1 pkgsrc/emulators/qemu/patches/patch-ee

cvs diff -r1.66 -r1.67 pkgsrc/emulators/qemu/Makefile (expand / switch to unified diff)

--- pkgsrc/emulators/qemu/Makefile 2010/04/25 12:55:41 1.66
+++ pkgsrc/emulators/qemu/Makefile 2010/05/17 14:31:07 1.67
@@ -1,18 +1,17 @@ @@ -1,18 +1,17 @@
1# $NetBSD: Makefile,v 1.66 2010/04/25 12:55:41 gson Exp $ 1# $NetBSD: Makefile,v 1.67 2010/05/17 14:31:07 tsutsui Exp $
2# 2#
3 3
4DISTNAME= qemu-0.12.3 4DISTNAME= qemu-0.12.4
5PKGREVISION= 2 
6CATEGORIES= emulators 5CATEGORIES= emulators
7MASTER_SITES= http://download.savannah.gnu.org/releases/qemu/ 6MASTER_SITES= http://download.savannah.gnu.org/releases/qemu/
8 7
9MAINTAINER= pkgsrc-users@NetBSD.org 8MAINTAINER= pkgsrc-users@NetBSD.org
10HOMEPAGE= http://www.qemu.org/ 9HOMEPAGE= http://www.qemu.org/
11COMMENT= CPU emulator using dynamic translation 10COMMENT= CPU emulator using dynamic translation
12LICENSE= gnu-gpl-v2 AND gnu-lgpl-v2.1 AND mit AND modified-bsd 11LICENSE= gnu-gpl-v2 AND gnu-lgpl-v2.1 AND mit AND modified-bsd
13 12
14PKG_DESTDIR_SUPPORT= user-destdir 13PKG_DESTDIR_SUPPORT= user-destdir
15 14
16CONFLICTS+= qemu-bin-[0-9]* 15CONFLICTS+= qemu-bin-[0-9]*
17NOT_FOR_PLATFORM= NetBSD-1.[0-6]*-* 16NOT_FOR_PLATFORM= NetBSD-1.[0-6]*-*
18 17
@@ -60,37 +59,37 @@ SUBST_STAGE.qaudio= pre-configure @@ -60,37 +59,37 @@ SUBST_STAGE.qaudio= pre-configure
60SUBST_FILES.qaudio= *.c *.h audio/*.c hw/*.c 59SUBST_FILES.qaudio= *.c *.h audio/*.c hw/*.c
61SUBST_SED.qaudio= -e s,audio.h\",qaudio.h\",g 60SUBST_SED.qaudio= -e s,audio.h\",qaudio.h\",g
62SUBST_MESSAGE.qaudio= Fixing audio.h confusion 61SUBST_MESSAGE.qaudio= Fixing audio.h confusion
63 62
64REPLACE_PERL+= texi2pod.pl 63REPLACE_PERL+= texi2pod.pl
65 64
66BUILDLINK_PASSTHRU_DIRS+= /usr/lib 65BUILDLINK_PASSTHRU_DIRS+= /usr/lib
67BUILDLINK_PASSTHRU_RPATHDIRS+= /usr/lib 66BUILDLINK_PASSTHRU_RPATHDIRS+= /usr/lib
68 67
69INSTALLATION_DIRS= ${PKGMANDIR}/man1 share/doc/qemu 68INSTALLATION_DIRS= ${PKGMANDIR}/man1 share/doc/qemu
70 69
71UE_ARCHS+= alpha arm armeb cris i386 m68k microblaze mips mipsel 70UE_ARCHS+= alpha arm armeb cris i386 m68k microblaze mips mipsel
72UE_ARCHS+= nbd ppc ppc64 ppc64abi32 sh4 sh4eb sparc sparc32plus 71UE_ARCHS+= nbd ppc ppc64 ppc64abi32 sh4 sh4eb sparc sparc32plus
73UE_ARCHS+= sparc64 x86_64  72UE_ARCHS+= sparc64 x86_64
74 73
75.if !empty(OPSYS:M*BSD) || !empty(OPSYS:MDragonFly)  74.if !empty(OPSYS:M*BSD) || !empty(OPSYS:MDragonFly)
76USER_EMUL= i386 x86_64 sparc sparc64 75USER_EMUL= i386 x86_64 sparc sparc64
77.elif !empty(OPSYS:MDarwin) 76.elif !empty(OPSYS:MDarwin)
78USER_EMUL= i386 x86_64 sparc sparc64 ppc 77USER_EMUL= i386 x86_64 sparc sparc64 ppc
79.elif !empty(OPSYS:MLinux)  78.elif !empty(OPSYS:MLinux)
80USER_EMUL= ${UE_ARCHS} 79USER_EMUL= ${UE_ARCHS}
81PLIST.nbd= Yes 80PLIST.nbd= YES
82.endif 81.endif
83 82
84PLIST_VARS+= ${UE_ARCHS} nbd 83PLIST_VARS+= ${UE_ARCHS} nbd
85.for _var_ in ${USER_EMUL} 84.for _var_ in ${USER_EMUL}
86PLIST.${_var_}= Yes 85PLIST.${_var_}= YES
87.endfor 86.endfor
88 87
89post-install: 88post-install:
90 ${INSTALL_DATA} ${FILESDIR}/Makefile.multinode-NetBSD \ 89 ${INSTALL_DATA} ${FILESDIR}/Makefile.multinode-NetBSD \
91 ${DESTDIR}${PREFIX}/share/doc/qemu/ 90 ${DESTDIR}${PREFIX}/share/doc/qemu/
92 91
93.include "../../devel/SDL/buildlink3.mk" 92.include "../../devel/SDL/buildlink3.mk"
94.include "../../mk/oss.buildlink3.mk" 93.include "../../mk/oss.buildlink3.mk"
95.include "../../mk/pthread.buildlink3.mk" 94.include "../../mk/pthread.buildlink3.mk"
96.include "../../mk/bsd.pkg.mk" 95.include "../../mk/bsd.pkg.mk"

cvs diff -r1.54 -r1.55 pkgsrc/emulators/qemu/distinfo (expand / switch to unified diff)

--- pkgsrc/emulators/qemu/distinfo 2010/04/25 12:55:41 1.54
+++ pkgsrc/emulators/qemu/distinfo 2010/05/17 14:31:07 1.55
@@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
1$NetBSD: distinfo,v 1.54 2010/04/25 12:55:41 gson Exp $ 1$NetBSD: distinfo,v 1.55 2010/05/17 14:31:07 tsutsui Exp $
2 2
3SHA1 (qemu-0.12.3.tar.gz) = 03ec307be094bb216bb5be17297e9f33e1a01b56 3SHA1 (qemu-0.12.4.tar.gz) = 1cc3200bf496c836f7c4256c1d12143dab9b82dc
4RMD160 (qemu-0.12.3.tar.gz) = 10dd16ee970a19a6706491fa4425ddbea1da2ba3 4RMD160 (qemu-0.12.4.tar.gz) = dbf5e02812b0df076e4ec8c20b7c382f7507645e
5Size (qemu-0.12.3.tar.gz) = 4693581 bytes 5Size (qemu-0.12.4.tar.gz) = 4697077 bytes
6SHA1 (patch-aa) = 7180def64ebff88074666adef21ee1b5022b6881 6SHA1 (patch-aa) = 7180def64ebff88074666adef21ee1b5022b6881
7SHA1 (patch-ao) = e515093b6ea99f9cba665de022fd62f3be911569 7SHA1 (patch-ao) = e515093b6ea99f9cba665de022fd62f3be911569
8SHA1 (patch-ba) = 7c5043a39405f52b512e479a46fc76108580b7bc 8SHA1 (patch-ba) = 7c5043a39405f52b512e479a46fc76108580b7bc
9SHA1 (patch-dd) = 32661203ba023bea67cd7cde1f4088f4d0e5c582 9SHA1 (patch-dd) = 32661203ba023bea67cd7cde1f4088f4d0e5c582
10SHA1 (patch-de) = 225eaa996fccc02b17be0099d943c75302600ada 10SHA1 (patch-de) = 225eaa996fccc02b17be0099d943c75302600ada
11SHA1 (patch-dk) = 5538bebc08b0047e501469f9cb306cb798d0eb00 11SHA1 (patch-dk) = 5538bebc08b0047e501469f9cb306cb798d0eb00
12SHA1 (patch-ed) = ef1871b82dac9c89dc3c3d28c97805fabeea43ab 12SHA1 (patch-ed) = ef1871b82dac9c89dc3c3d28c97805fabeea43ab
 13SHA1 (patch-ee) = 98081c9468d25564711f37cdff3958037f41b17d

File Added: pkgsrc/emulators/qemu/patches/Attic/patch-ee
$NetBSD: patch-ee,v 1.1 2010/05/17 14:31:07 tsutsui Exp $

See NetBSD PR pkg/43311 and QEMU Bugs #581737:
https://bugs.launchpad.net/qemu/+bug/581737

--- hw/e1000.c.orig	2010-02-24 05:54:38.000000000 +0900
+++ hw/e1000.c	2010-05-08 04:04:39.000000000 +0900
@@ -259,21 +259,20 @@
 
     s->eecd_state.old_eecd = val & (E1000_EECD_SK | E1000_EECD_CS |
             E1000_EECD_DI|E1000_EECD_FWE_MASK|E1000_EECD_REQ);
+    if (!(E1000_EECD_CS & val))			// CS inactive; nothing to do
+	return;
+    if (E1000_EECD_CS & (val ^ oldval)) {	// CS rise edge; reset state
+	s->eecd_state.val_in = 0;
+	s->eecd_state.bitnum_in = 0;
+	s->eecd_state.bitnum_out = 0;
+	s->eecd_state.reading = 0;
+    }
     if (!(E1000_EECD_SK & (val ^ oldval)))	// no clock edge
         return;
     if (!(E1000_EECD_SK & val)) {		// falling edge
         s->eecd_state.bitnum_out++;
         return;
     }
-    if (!(val & E1000_EECD_CS)) {		// rising, no CS (EEPROM reset)
-        memset(&s->eecd_state, 0, sizeof s->eecd_state);
-        /*
-         * restore old_eecd's E1000_EECD_SK (known to be on)
-         * to avoid false detection of a clock edge
-         */
-        s->eecd_state.old_eecd = E1000_EECD_SK;
-        return;
-    }
     s->eecd_state.val_in <<= 1;
     if (val & E1000_EECD_DI)
         s->eecd_state.val_in |= 1;