** Patch added: "patch by git format-patch --signoff" http://launchpadlibrarian.net/49607393/qemu-git.patch
-- 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 bui...@b7.netbsd.org:/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.