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