qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 581737] Re: Can't read e1000 NIC EEPROM on NetBSD gues


From: Aurelien Jarno
Subject: [Qemu-devel] [Bug 581737] Re: Can't read e1000 NIC EEPROM on NetBSD guest
Date: Sun, 20 Feb 2011 17:13:11 -0000

** Changed in: qemu
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/581737

Title:
  Can't read e1000 NIC EEPROM on NetBSD guest

Status in QEMU:
  Fix Released

Bug description:
  QEMU Version: qemu-0.12.4
  Host OS: NetBSD/i386 5.0.2
  Guest OS: NetBSD/i386 5.1_RC1

  On this environment, guest NetBSD tries to attach e1000 NIC using its own 
wm(4) driver but fails to read EEPROM as the following:
  ---
  NetBSD 5.1_RC1 (GENERIC) #0: Sat Apr 24 23:26:09 UTC 2010
          
address@hidden:/home/builds/ab/netbsd-5-1-RC1/i386/201004250032Z-obj/home/builds/ab/
  netbsd-5-1-RC1/src/sys/arch/i386/compile/GENERIC
  total memory = 127 MB
  avail memory = 113 MB
  Bochs Bochs
   :
  drm at vga1 not configured
  wm0 at pci0 dev 3 function 0: Intel i82540EM 1000BASE-T Ethernet, rev. 3
  wm0: interrupting at irq 11
  wm0: unable to read Ethernet address
  isa0 at pcib0
   :
  ---

  You can reproduce this with NetBSD/i386 install CD image:
   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---
   [type ^C to quit installer]
   # dmesg | grep wm0
  ------

  Per DBGOUT(EEPROM) messages, it show too large eecd_state.bitnum values, i.e. 
EEPROM state is not reset properly.
  The set_eecd() function in e1000.c clears EEPROM internal state values on SK 
rising edge during CS==L.
  But according to FM93C06 EEPROM (which is MicroWire compatible) data sheet,
  EEPROM internal status should be cleared on CS rise edge regardless of SK 
input:
   "... 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 with 
current e1000.c implementation,
  but I can't find articles that say the MICROWIRE or EEPROM spec requires such 
sequence.

  With the attached patch, NetBSD guest properly gets MAC address from
  e1000 NIC EEPROM.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]