amd64 S3 patch on HP 6715b: NICs won't work after resume from S3

Coleman Kane cokane at FreeBSD.org
Fri Jan 2 20:34:39 UTC 2009


On Fri, 2009-01-02 at 12:06 -0500, Coleman Kane 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?
> 

I did find that one register that does get trashed by the resume is the
high-part of the MSI Address Register (0x5C, BGE_PCI_MSI_ADDR_HIGH from
sys/dev/bge/if_bgereg.h). Am I correct in assuming that the PCI 2.2
register addresses in the middle of if_bgereg.h correlate to the
addresses in these reg dumps?

-- 
Coleman Kane
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-acpi/attachments/20090102/3eceaa1c/attachment.pgp


More information about the freebsd-acpi mailing list