amd64 S3 patch on HP 6715b: NICs won't work after resume from S3
Garrett Cooper
yanefbsd at gmail.com
Fri Jan 2 19:09:11 UTC 2009
On Jan 2, 2009, at 9:06, Coleman Kane <cokane at FreeBSD.org> wrote:
> On Tue, 2008-12-30 at 11:14 -0800, Nate Lawson wrote:
>> Coleman Kane wrote:
>>> On Mon, 2008-12-29 at 12:16 -0800, Nate Lawson wrote:
>>>> Coleman Kane wrote:
>>>>> On Mon, 2008-12-29 at 08:19 -0800, Nate Lawson wrote:
>>>>>> Coleman Kane wrote:
>>>>>>> I've been testing Jung-uk Kim's recent amd64 suspend patch on
>>>>>>> my HP
>>>>>>> notebook, and it seems to be very close to working well.
>>>>>>>
>>>>>>> The notebook goes into S3 state properly, but when it comes
>>>>>>> back out it
>>>>>>> seems that the hardware is left in a bad state. I cannot
>>>>>>> attach my
>>>>>>> if_bge and if_ndis network drivers after a resume.
>>>>>> Dump the pci config register states for those devices both
>>>>>> before and
>>>>>> after the resume. Where the bits differ is probably where
>>>>>> you'll find
>>>>>> the problem.
>>>>>>
>>>>>> Example to read 256 bytes:
>>>>>> pciconf -r pci0:4:0 0:256
>>>>>>
>>>>> Tried that, and I also tried to use pciconf -w to set the
>>>>> registers to
>>>>> the initial state of the hardware before if_bge is loaded. I
>>>>> still get
>>>>> the following messages when I attempt to reload the kld after the
>>>>> resume, followed by a failed attach:
>>>>>
>>>>> bge0: <Broadcom BCM5754/5787 A2, ASIC rev. 0xb002> mem
>>>>> 0xd0000000-0xd000ffff irq 16 at device 0.0 on pci16
>>>>> bge0: firmware handshake timed out, found 0x4b657654
>>>>> bge0: firmware handshake timed out, found 0x4b657654
>>>>> bge0: RX CPU self-diagnostics failed!
>>>>> bge0: chip initialization failed
>>>>> device_attach: bge0 attach returned 6
>>>>>
>>>>> Anyone have success with S3 on amd64 or i386 with if_bge cards?
>>>> Did you post the register states before and after?
>>>>
>>> Attached are the before and after snapshots of the device's PCI
>>> register
>>> space. I need to track down a good table to mate these with. In this
>>> case, I didn't unload the driver, as the if_bge driver is supposed
>>> to be
>>> able to properly handle suspend/resume now.
>>>
>>> These are dumps of the whole 256-byte register space, using:
>>> pciconf -r -b pci0:16:0:0 0:0x100
>>
>> Great. So far in FreeBSD, anything after the first 64 bytes is the
>> driver's responsibility. According to your dump, that is where all
>> the
>> differences are.
>>
>
> So, my guess is that the bge_suspend and bge_resume methods in the bge
> driver need some tweaking to support my hardware (the BCM5754/5787)
> when
> it comes out of resume...
>
> Any pointers on who I might be able to work on this with?
Dumb observation: driver maintainer?
-Garrett
More information about the freebsd-acpi
mailing list