Bug 136876 - [bge] [suspend/resume] bge will not resume properly after suspend
Summary: [bge] [suspend/resume] bge will not resume properly after suspend
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 8.0-BETA1
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-17 22:00 UTC by Adam K Kirchhoff
Modified: 2017-12-31 22:23 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adam K Kirchhoff 2009-07-17 22:00:12 UTC
When I resume my laptop from suspend, bge0 is no longer usable:

Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 0, val 32768)
Jul 14 12:35:53 scroll kernel: bge0: PHY read timed out (phy 1, reg 0, val 0xffffffff)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 24, val 3072)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 23, val 10)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 21, val 12555)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 23, val 8223)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 21, val 38150)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 23, val 16415)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 21, val 5346)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 24, val 1024)
Jul 14 12:35:53 scroll kernel: bge0: PHY write timed out (phy 1, reg 24, val 7)

And so on and so forth.

I thought that compiling if_bge as a module, unloading it before suspend, and reloading it after resume, might get this working.   However, doing a "kldload if_bge" after the resume does nothing.  Well, the module gets loaded, but the device doesn't show up.  No errors from kldload, and there is nothing new in dmesg.

Before the suspend, the device shows up as:

bge0@pci0:2:0:0:        class=0x020000 card=0x01821028 chip=0x167714e4 rev=0x01 hdr=0x00
   vendor     = 'Broadcom Corporation'
   device     = 'NetXtreme Gigabit Ethernet PCI Express (BCM5750A1)'
   class      = network
   subclass   = ethernet

After resuming,  and reloading the module, it's:

none1@pci0:2:0:0:       class=0x020000 card=0x01821028 chip=0x167714e4 rev=0x01 hdr=0x00
   vendor     = 'Broadcom Corporation'
   device     = 'NetXtreme Gigabit Ethernet PCI Express (BCM5750A1)'
   class      = network
   subclass   = ethernet

Following a suggestion by Paul Mahol, I set the following via sysctl:

hw.pci.do_power_nodriver="3"
hw.pci.do_power_resume="1"

Then I unloaded if_bge, unloaded snd_ich, reloaded snd_ich, suspended, resumed, and loaded if_bge.  In this situation, my entire machine locks up solid after displaying the following output:

bge0: <Broadcom NetXtreme Gigabit Ethernet Controller, unknown ASIC rev. 
0xffff>
mem 0xdfdf0000-0xdfdfffff irq 16 at device 0.0 on pci2

There is no kernel panic, just a complete system hang.

How-To-Repeat: 
Install 8.0-BETA1 on a laptop with bge (specifically, a Dell Latitude D610, but since someone else has reported the same problem, I imagine this is not limited to just that model), then suspend and resume.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2009-07-18 05:26:34 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-net

Over to maintainer(s).
Comment 2 Gonzalo Nemmi 2009-07-20 22:22:37 UTC
I can confirm experiencing the same behaviour on my Dell 1318 running 
FreeBSD 8.0-BETA2 for i386 using the stock kernel and 
kern.smp.disabled="1" on my device.hints.

Hw: Dell 1318, Intel(R) Celeron(R) CPU 560@2.13GHz.

bge0@pci0:9:0:0:        class=0x020000 card=0x02861028 chip=0x171314e4 
rev=0x02 
hdr=0x00
vendor     = 'Broadcom Corporation'
device     = 'Broadcom NetLink (TM) Fast Ethernet (BCM5906m)'
class      = network
subclass   = ethernet
bar   [10] = type Memory, range 64, base rxf69f0000, size 65536, enabled
cap 01[48] = powerspec 3  supports D0 D3  current D0
cap 03[50] = VPD
cap 09[58] = vendor (length 120)
cap 05[e8] = MSI supports 1 message, 64 bit enabled with 1 message
cap 10[d0] = PCI-Express 1 endpoint max data 128(128) link x1(x1)

kldstat

Id Refs Address    Size     Name
 1   28 0xc0400000 cf6c70   kernel
 2    1 0xc10f7000 11bc0    if_bge.ko
 3    1 0xc1109000 1ac4c    snd_hda.ko
 4    2 0xc1124000 61f78    sound.ko
 5    1 0xc1186000 2af4     coretemp.ko
 6    1 0xc1189000 a6d8     i915.ko
 7    2 0xc1194000 177d4    drm.ko


kldunload if_bge snd_hda

Jul 20 17:50:49 gargoyle login: ROOT LOGIN (root) ON ttyv0
Jul 20 17:51:06 gargoyle kernel: brgphy0: detached
Jul 20 17:51:06 gargoyle kernel: lock order reversal:
Jul 20 17:51:06 gargoyle kernel: 1st 0xc0dba45c kernel linker (kernel 
linker) @ /usr/src/sys/kern/kern_linker.c:1079
Jul 20 17:51:06 gargoyle kernel: 2nd 0xc0dbbc64 sysctl lock (sysctl 
lock) @ /usr/src/sys/kern/kern_sysctl.c:257
Jul 20 17:51:06 gargoyle kernel: KDB: stack backtrace:
Jul 20 17:51:06 gargoyle kernel: 
db_trace_self_wrapper(c0c6baf4,e6daba34,c08bc995,c08ad6db,c0c6e989,...) 
at db_trace_self_wrapper+0x26
Jul 20 17:51:06 gargoyle kernel: 
kdb_backtrace(c08ad6db,c0c6e989,c452bc88,c4529e10,e6daba90,...) at 
kdb_backtrace+0x29
Jul 20 17:51:06 gargoyle kernel: 
_witness_debugger(c0c6e989,c0dbbc64,c0c69667,c4529e10,c0c6956e,...) at 
_witness_debugger+0x25
Jul 20 17:51:06 gargoyle kernel: 
witness_checkorder(c0dbbc64,9,c0c6956e,101,0,...) at 
witness_checkorder+0x839
Jul 20 17:51:06 gargoyle kernel: 
_sx_xlock(c0dbbc64,0,c0c6956e,101,c4722c00,...) at _sx_xlock+0x85
Jul 20 17:51:06 gargoyle kernel: 
sysctl_ctx_free(c4722c4c,c4722c00,e6dabb18,c08a3c85,c4722c00,...) at 
sysctl_ctx_free+0x30
Jul 20 17:51:06 gargoyle kernel: 
device_sysctl_fini(c4722c00,0,c0d4c848,c472a810,c4ab3400,...) at 
device_sysctl_fini+0x1a
Jul 20 17:51:06 gargoyle kernel: 
device_detach(c4722c00,c4722b80,e6dabb38,c06bc622,c4722b80,...) at 
device_detach+0x1f5
Jul 20 17:51:06 gargoyle kernel: 
bus_generic_detach(c4722b80,c4722b80,e6dabb64,c08a3b1c,c4722b80,...) at 
bus_generic_detach+0x29
Jul 20 17:51:06 gargoyle kernel: 
miibus_detach(c4722b80,c45d6060,c0d4ca68,a3c,c0c76f47,...) at 
miibus_detach+0x12
Jul 20 17:51:06 gargoyle kernel: 
device_detach(c4722b80,c472b008,e6dabb98,c10ff7ff,c4722300,...) at 
device_detach+0x8c
Jul 20 17:51:06 gargoyle kernel: 
bus_generic_detach(c4722300,1,c1104b66,aec,c4722300,...) at 
bus_generic_detach+0x29
Jul 20 17:51:06 gargoyle kernel: 
bge_detach(c4722300,c4677060,c0d4ca68,a3c,c4526300,...) at 
bge_detach+0xbf
Jul 20 17:51:06 gargoyle kernel: 
device_detach(c4722300,c086c843,c0dbb570,c1106c20,c456fb80,...) at 
device_detach+0x8c
Jul 20 17:51:06 gargoyle kernel: 
driver_module_handler(c4526300,1,c1106c20,109,0,...) at 
driver_module_handler+0x29c
Jul 20 17:51:06 gargoyle kernel: 
module_unload(c4526300,c0c652ef,273,270,c08604b6,...) at 
module_unload+0x43
Jul 20 17:51:06 gargoyle kernel: 
linker_file_unload(c4544200,0,c0c652ef,437,c10f7000,...) at 
linker_file_unload+0x15e
Jul 20 17:51:06 gargoyle kernel: 
kern_kldunload(c4b346c0,2,0,e6dabd2c,c0ba8dd3,...) at 
kern_kldunload+0xd5
Jul 20 17:51:06 gargoyle kernel: 
kldunloadf(c4b346c0,e6dabcf8,8,c0c6fa4b,c0d50450,...) at 
kldunloadf+0x2b
Jul 20 17:51:06 gargoyle kernel: syscall(e6dabd38) at syscall+0x2a3
Jul 20 17:51:06 gargoyle kernel: Xint0x80_syscall() at 
Xint0x80_syscall+0x20
Jul 20 17:51:06 gargoyle kernel: --- syscall (444, FreeBSD ELF32, 
kldunloadf), eip = 0x280d516b, esp = 0xbfbfe47c, ebp = 0xbfbfecc8 ---
Jul 20 17:51:06 gargoyle kernel: miibus0: detached
Jul 20 17:51:06 gargoyle kernel: bge0: detached
Jul 20 17:51:06 gargoyle kernel: sysctl_unregister_oid: failed to 
unregister sysctl
Jul 20 17:51:06 gargoyle kernel: pcm0: detached
Jul 20 17:51:06 gargoyle kernel: hdac0: detached


kldoad snd_hda

Jul 20 17:52:16 gargoyle kernel: hdac0: <Intel 82801H High Definition 
Audio Controller> mem 0xf6dfc000-0xf6dfffff irq 21 at device 27.0 on 
pci0
Jul 20 17:52:16 gargoyle kernel: hdac0: HDA Driver Revision: 
20090624_0136
Jul 20 17:52:16 gargoyle kernel: hdac0: [ITHREAD]
Jul 20 17:52:16 gargoyle kernel: hdac0: HDA Codec #0: Sigmatel STAC9228X
Jul 20 17:52:16 gargoyle kernel: bge0: <Broadcom BCM5906 A2, ASIC rev. 
0xc002> mem 0xf69f0000-0xf69fffff irq 17 at device 0.0 on pci9
Jul 20 17:52:16 gargoyle kernel: miibus0: <MII bus> on bge0
Jul 20 17:52:16 gargoyle kernel: brgphy0: <BCM5906 10/100baseTX PHY> PHY 
1 on miibus0
Jul 20 17:52:16 gargoyle kernel: brgphy0:  10baseT, 10baseT-FDX, 
100baseTX, 100baseTX-FDX, auto
Jul 20 17:52:16 gargoyle kernel: bge0: Ethernet address: 
00:23:ae:04:ba:ca
Jul 20 17:52:16 gargoyle kernel: bge0: [ITHREAD]
Jul 20 17:52:16 gargoyle kernel: pcm0: <HDA Sigmatel STAC9228X PCM #0 
Analog> at cad 0 nid 1 on hdac0
Jul 20 17:52:16 gargoyle kernel: bge0: link state changed to DOWN
Jul 20 17:52:18 gargoyle kernel: bge0: link state changed to UP


acpiconf -s 3

Jul 20 17:53:51 gargoyle acpi: suspend at 20090720 17:53:51
Jul 20 17:53:56 gargoyle kernel: fwohci0: fwohci_pci_suspend
Jul 20 17:54:25 gargoyle kernel: bge0: PHY write timed out (phy 1, reg 
0, val 32768)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY read timed out (phy 1, reg 0, 
val 0xffffffff)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY read timed out (phy 1, reg 
24, val 0xffffffff)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY read timed out (phy 1, reg 
16, val 0xffffffff)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY write timed out (phy 1, reg 
16, val 0)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY read timed out (phy 1, reg 
16, val 0xffffffff)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY write timed out (phy 1, reg 
16, val 0)
Jul 20 17:54:25 gargoyle kernel: bge0: PHY write timed out (phy 1, reg 
23, val 18)
Jul 20 17:54:25 gargoyle kernel: bge0: flow-through queue init failed
Jul 20 17:54:25 gargoyle kernel: bge0: initialization failure
Jul 20 17:54:25 gargoyle kernel: fwohci0: Phy 1394a available S400, 1 
ports.
Jul 20 17:54:25 gargoyle kernel: fwohci0: Link S400, max_rec 2048 bytes.
Jul 20 17:54:25 gargoyle kernel: fwohci0: Initiate bus reset
Jul 20 17:54:25 gargoyle kernel: fwohci0: fwohci_intr_core: BUS reset
Jul 20 17:54:25 gargoyle kernel: fwohci0: fwohci_intr_core: 
node_id=0x00000000, SelfID Count=1, CYCLEMASTER mode
Jul 20 17:54:25 gargoyle kernel: firewire0: 1 nodes, maxhop <= 0 cable 
IRM irm(0)  (me) 
Jul 20 17:54:25 gargoyle kernel: firewire0: bus manager 0 
Jul 20 17:54:25 gargoyle kernel: fwohci0: unrecoverable error
Jul 20 17:54:25 gargoyle kernel: wakeup from sleeping state (slept 
00:00:29)
Jul 20 17:54:25 gargoyle acpi: resumed at 20090720 17:54:25


more info:
http://lists.freebsd.org/pipermail/freebsd-current/2009-July/009023.html
http://lists.freebsd.org/pipermail/freebsd-current/2009-July/009385.html

This problem also affects FreeBSD 7.2-RELEASE:
http://forums.freebsd.org/showthread.php?t=3886
Comment 3 Gonzalo Nemmi 2009-08-25 14:51:13 UTC
bge0 problem is still present on BETA3
-- 
Blessings
Gonzalo Nemmi
Comment 4 Gonzalo Nemmi 2009-09-21 18:21:54 UTC
Still present in 8.0-BETA4 and 8.0-RC1
Comment 5 kamikaze 2009-12-22 09:26:43 UTC
The problem is also present on amd64:

> uname -a
FreeBSD mobileKamikaze.norad 8.0-STABLE FreeBSD 8.0-STABLE #0: Tue Dec 15 22:48:25 CET 2009     root@mobileKamikaze.norad:/usr/obj/HP6510b-8/amd64/usr/src/sys/HP6510b-8  amd64

I can provide more details. I'd really like to see this work.
Comment 6 Andre Oppermann freebsd_committer freebsd_triage 2010-08-23 18:50:22 UTC
Responsible Changed
From-To: freebsd-net->yongari

Over to expert.
Comment 7 Eitan Adler freebsd_committer freebsd_triage 2017-12-31 07:59:39 UTC
For bugs matching the following criteria:

Status: In Progress Changed: (is less than) 2014-06-01

Reset to default assignee and clear in-progress tags.

Mail being skipped