Re: [REGRESSION] tg3 dead after s2ram
From: Joachim Deguara <hidden>
Date: 2007-08-02 08:07:02
Also in:
linux-acpi, lkml
On Wednesday 01 August 2007 23:00:23 Michael Chan wrote:
On Wed, 2007-08-01 at 10:47 -0700, Michael Chan wrote:quoted
You have 2 Broadcom devices in your system. 07:00.0 is a wireless device, I think. 8:4.0 is the tg3 device. It's clear that the tg3 device is still in D3 state after resume and that explains why all register accesses fail. tg3_resume() should put the device back in D0 state in a very straight forward way and I don't see how that can fail. It worked for me when I tested it last night. Can you add some printk() to tg3_resume() to see what's happening? Let me know if you want me to send you some debug patches to do that.I misread the PCI registers below. The power state was ok. The problem is that memory enable and bus master were not set in PCI register 4 after resume. This also explains the register access failures. In tg3_resume(), we call pci_restore_state() which should re-enable those 2 bits in PCI register 4. Can you add some printk() to see why those bits are not restored after pci_restore_state()?
Reading pci_restore_state() it looks already instrumented. Sorry about the wrong pci device, looking at my BCM5788 it is pci device 08:04.0 and looking at the log from my first post there is nothing restored in the first 64 bytes! Otherwise it would have said "PM: Writing back..." Is this what you are looking for or should I do other printk instrumentation? -Joachim