[Top][All Lists]
[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: |
Izumi Tsutsui |
Subject: |
[Qemu-devel] [Bug 581737] Re: Can't read e1000 NIC EEPROM on NetBSD guest |
Date: |
Sun, 13 Jun 2010 05:16:34 -0000 |
> Please email the patch to address@hidden via git-send-email.
Isn't the following post enough? What's incomplete on this?
http://lists.nongnu.org/archive/html/qemu-devel/2010-06/msg00449.html
(sorry I'm not familiar with git)
--
Can't read e1000 NIC EEPROM on NetBSD guest
https://bugs.launchpad.net/bugs/581737
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
Status in QEMU: Incomplete
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.