pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/43311: update emulators/qemu 0.12.4 and fix for NetBSD's wm(4)
>Number: 43311
>Category: pkg
>Synopsis: update emulators/qemu 0.12.4 and fix for NetBSD's wm(4)
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Sun May 16 04:40:00 +0000 2010
>Originator: Izumi Tsutsui
>Release: NetBSD 5.99.22
>Organization:
>Environment:
System: NetBSD/i386
Architecture: i386
Machine: i386
>Description:
qemu-0.12.4 was out on May 4, 2010:
http://wiki.qemu.org/Main_Page#News
and ChangeLog is here:
http://wiki.qemu.org/ChangeLog
On the other hand, NetBSD/i386 5.1_RC1 on QEMU doesn't recognize wm(4)
Ethernet properly:
http://mail-index.NetBSD.org/tech-net/2010/05/07/msg002079.html
>How-To-Repeat:
% grep DISTNAME pkgsrc/emulators/qemu/Makefile
DISTNAME= qemu-0.12.3
% ftp ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-5.1_RC1/iso/i386cd-5.1_RC1.iso
% qemu -cdrom i386cd-5.1_RC1.iso -boot d
---in QEMU window---
^C
dmesg | grep wm0
---
>Fix:
* Updating to 0.12.4 doesn't require any specific pkgsrc changes.
Only distinfo and DISTNAME are updated.
* Makefile is also changed to appease some pkglint warnings.
* patch-ee includes a fix against e1000.c to make wm(4) work on NetBSD:
* 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
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/emulators/qemu/Makefile,v
retrieving revision 1.66
diff -u -r1.66 Makefile
--- Makefile 25 Apr 2010 12:55:41 -0000 1.66
+++ Makefile 16 May 2010 04:04:57 -0000
@@ -1,8 +1,7 @@
# $NetBSD: Makefile,v 1.66 2010/04/25 12:55:41 gson Exp $
#
-DISTNAME= qemu-0.12.3
-PKGREVISION= 2
+DISTNAME= qemu-0.12.4
CATEGORIES= emulators
MASTER_SITES= http://download.savannah.gnu.org/releases/qemu/
@@ -70,20 +69,20 @@
UE_ARCHS+= alpha arm armeb cris i386 m68k microblaze mips mipsel
UE_ARCHS+= nbd ppc ppc64 ppc64abi32 sh4 sh4eb sparc sparc32plus
-UE_ARCHS+= sparc64 x86_64
+UE_ARCHS+= sparc64 x86_64
-.if !empty(OPSYS:M*BSD) || !empty(OPSYS:MDragonFly)
+.if !empty(OPSYS:M*BSD) || !empty(OPSYS:MDragonFly)
USER_EMUL= i386 x86_64 sparc sparc64
.elif !empty(OPSYS:MDarwin)
USER_EMUL= i386 x86_64 sparc sparc64 ppc
-.elif !empty(OPSYS:MLinux)
+.elif !empty(OPSYS:MLinux)
USER_EMUL= ${UE_ARCHS}
-PLIST.nbd= Yes
+PLIST.nbd= YES
.endif
PLIST_VARS+= ${UE_ARCHS} nbd
.for _var_ in ${USER_EMUL}
-PLIST.${_var_}= Yes
+PLIST.${_var_}= YES
.endfor
post-install:
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/emulators/qemu/distinfo,v
retrieving revision 1.54
diff -u -r1.54 distinfo
--- distinfo 25 Apr 2010 12:55:41 -0000 1.54
+++ distinfo 16 May 2010 04:04:57 -0000
@@ -1,8 +1,8 @@
$NetBSD: distinfo,v 1.54 2010/04/25 12:55:41 gson Exp $
-SHA1 (qemu-0.12.3.tar.gz) = 03ec307be094bb216bb5be17297e9f33e1a01b56
-RMD160 (qemu-0.12.3.tar.gz) = 10dd16ee970a19a6706491fa4425ddbea1da2ba3
-Size (qemu-0.12.3.tar.gz) = 4693581 bytes
+SHA1 (qemu-0.12.4.tar.gz) = 1cc3200bf496c836f7c4256c1d12143dab9b82dc
+RMD160 (qemu-0.12.4.tar.gz) = dbf5e02812b0df076e4ec8c20b7c382f7507645e
+Size (qemu-0.12.4.tar.gz) = 4697077 bytes
SHA1 (patch-aa) = 7180def64ebff88074666adef21ee1b5022b6881
SHA1 (patch-ao) = e515093b6ea99f9cba665de022fd62f3be911569
SHA1 (patch-ba) = 7c5043a39405f52b512e479a46fc76108580b7bc
@@ -10,3 +10,4 @@
SHA1 (patch-de) = 225eaa996fccc02b17be0099d943c75302600ada
SHA1 (patch-dk) = 5538bebc08b0047e501469f9cb306cb798d0eb00
SHA1 (patch-ed) = ef1871b82dac9c89dc3c3d28c97805fabeea43ab
+SHA1 (patch-ee) = 83a38113c5ad7d7166b77bc4a157d4baf057f77d
--- /dev/null 2010-05-16 12:59:32.000000000 +0900
+++ patches/patch-ee 2010-05-09 00:49:03.000000000 +0900
@@ -0,0 +1,33 @@
+$NetBSD$
+--- 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;
Home |
Main Index |
Thread Index |
Old Index