[PATCH][Karmic] SRU: pci: Ensure we re-enable devices on resume

Stefan Bader stefan.bader at canonical.com
Tue Apr 27 10:35:12 UTC 2010


Tim Gardner wrote:
> On 04/27/2010 04:27 AM, Alex Chiang wrote:
>> BugLink: http://bugs.launchpad.net/bugs/566149
>>
>> SRU justification:
>> The original patch which added the check in pci_set_power_state was a
>> minor thinko, and prevented platform resume code from running. This patch
>> removes the incorrect check, allowing platform resume code to run, thus
>> re-enabling devices such as USB ports.
>>
>> Backport of upstream commit:
>>
>> commit cc2893b6af5265baa1d68b17b136cffca9e40cfa
>> Author: Matthew Garrett<mjg at redhat.com>
>> Date:   Thu Apr 22 09:30:51 2010 -0400
>>
>>      PCI: Ensure we re-enable devices on resume
>>
>>      If the firmware puts a device back into D0 state at resume time, we'll
>>      update its state in resume_noirq and thus skip the platform resume code.
>>      Calling that code twice should be safe and we ought to avoid getting to
>>      that point anyway, so remove the check and also allow the platform pci
>>      code to be called for D0.
>>
>>      Fixes USB not being powered after resume on recent Lenovo machines.
>>
>>      Acked-by: Alex Chiang<achiang at canonical.com>
>>      Acked-by: Rafael J. Wysocki<rjw at sisk.pl>
>>      Signed-off-by: Matthew Garrett<mjg at redhat.com>
>>      Signed-off-by: Jesse Barnes<jbarnes at virtuousgeek.org>
>>
>> Signed-off-by: Alex Chiang<achiang at canonical.com>
>> ---
>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>> index e5f3f1c..579dcf5 100644
>> --- a/drivers/pci/pci.c
>> +++ b/drivers/pci/pci.c
>> @@ -591,7 +591,7 @@ static void __pci_start_power_transition(struct pci_dev *dev, pci_power_t state)
>>    */
>>   int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state)
>>   {
>> -	return state>  PCI_D0 ?
>> +	return state>= PCI_D0 ?
>>   			pci_platform_power_transition(dev, state) : -EINVAL;
>>   }
>>   EXPORT_SYMBOL_GPL(__pci_complete_power_transition);
>> @@ -628,10 +628,6 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
>>   		 */
>>   		return 0;
>>
>> -	/* Check if we're already there */
>> -	if (dev->current_state == state)
>> -		return 0;
>> -
>>   	__pci_start_power_transition(dev, state);
>>
>>   	/* This device is quirked not to be put into D3, so
>>
> 
> This looks like it is also appropriate for Lucid as well as 
> stable at kernel.org, right?
> 
> Acked-by: Tim Gardner <tim.gardner at canonical.com>
> 
> rtg

If this is part of what was discussed yesterday on irc, this is going upstream
stable and through that to Lucid. Just for Karmic it needed a specific SRU as we
don't pick stable for that anymore.

Acked-by: Stefan Bader <stefan.bader at canonical.com>




More information about the kernel-team mailing list