From nobody@FreeBSD.org  Fri Jul 17 20:52:58 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 921211065675
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 17 Jul 2009 20:52:58 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 666EC8FC12
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 17 Jul 2009 20:52:58 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n6HKqwjh020236
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 17 Jul 2009 20:52:58 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n6HKqw4c020235;
	Fri, 17 Jul 2009 20:52:58 GMT
	(envelope-from nobody)
Message-Id: <200907172052.n6HKqw4c020235@www.freebsd.org>
Date: Fri, 17 Jul 2009 20:52:58 GMT
From: Adam K Kirchhoff <adamk@voicenet.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: bge will not resume properly after suspend
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         136876
>Category:       kern
>Synopsis:       [bge] [suspend/resume] bge will not resume properly after suspend
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    yongari
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 17 21:00:12 UTC 2009
>Closed-Date:    
>Last-Modified:  Tue Apr 22 05:25:05 UTC 2014
>Originator:     Adam K Kirchhoff
>Release:        8.0-BETA1
>Organization:
>Environment:
FreeBSD scroll.ashke.com 8.0-BETA1 FreeBSD 8.0-BETA1 #0: Tue Jul 14 09:02:26 EDT 2009     root@:/usr/obj/usr/src/sys/SCROLL  i386

>Description:

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.

>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-net 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Sat Jul 18 04:26:34 UTC 2009 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136876 

From: Gonzalo Nemmi <gnemmi@gmail.com>
To: bug-followup@freebsd.org,
 adamk@voicenet.com
Cc:  
Subject: Re: kern/136876: [bge] bge will not resume properly after suspend
Date: Mon, 20 Jul 2009 18:22:37 -0300

 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 0xf69f0000, 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

From: Gonzalo Nemmi <gnemmi@gmail.com>
To: bug-followup@freebsd.org,
 adamk@voicenet.com
Cc:  
Subject: Re: kern/136876: [bge] bge will not resume properly after suspend
Date: Tue, 25 Aug 2009 10:51:13 -0300

 bge0 problem is still present on BETA3
 -- 
 Blessings
 Gonzalo Nemmi

From: Gonzalo Nemmi <gnemmi@gmail.com>
To: bug-followup@freebsd.org,
 adamk@voicenet.com
Cc:  
Subject: Re: kern/136876: [bge] bge will not resume properly after suspend
Date: Mon, 21 Sep 2009 14:21:54 -0300

 Still present in 8.0-BETA4 and 8.0-RC1

From: Dominic Fandrey <kamikaze@bsdforen.de>
To: bug-followup@FreeBSD.org, adamk@voicenet.com
Cc:  
Subject: Re: kern/136876: [bge] bge will not resume properly after suspend
Date: Tue, 22 Dec 2009 10:26:43 +0100

 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.
Responsible-Changed-From-To: freebsd-net->yongari 
Responsible-Changed-By: andre 
Responsible-Changed-When: Mon Aug 23 17:50:22 UTC 2010 
Responsible-Changed-Why:  
Over to expert. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136876 
>Unformatted:
