Re: [Query] PCIe power management with designware

From: Kishon Vijay Abraham I
Date: Tue May 05 2015 - 09:24:01 EST


Hi Pratyush,

On Tuesday 05 May 2015 06:33 PM, Pratyush Anand wrote:

Thank you for responding.
Hi Kishon,

Correcting Mohit's ID

On Mon, May 4, 2015 at 9:54 PM, Kishon Vijay Abraham I <kishon@xxxxxx> wrote:

Hi,

I'm planning to add power management (suspend/resume) support for DRA7xx and have a query.

The pci_pm_suspend_noirq callback being a bus pm_ops gets invoked late i.e after the suspend hooks of the pci devices (including the RC driver). The problem is after the 'suspend' of the RC driver, the clocks are disabled. Now

I think, clocks should not be disabled at this point.

pci_pm_suspend_noirq has a call to pci_save_state() which tries to access the
configuration space registers. Since the clocks are disabled by now, this results in an abort. Shouldn't we do save_state() earlier?

So, RC driver should need to implement a pm->suspend_noirq() where it
can handle all these.

okay.. let me try that.


After working around the above problem, I face one more issue with broadcom BCM95721 A211 card. After resuming, I'm unable to access the memory space. I'm not sure if that is specific to that particular card, since I have no problems with USB cards.

If you are able to access configuration space and not able to access
memory space then that seems strange.
If cfg is also not accessible then can you check if link training with
BCM95721 A211 card was successful?

I'm able to access the configuration space. The pci core writes D0 to the pmcsr register of the card and I get

"tg3 0000:01:00.0: Refused to change power state, currently in D3".

After that in the resume callback of the card, when it tries to access the ethernet registers it hangs.

Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/