Re: [Resend][PATCH] pciehp: always implement resume

From: Bjorn Helgaas
Date: Fri Sep 07 2012 - 19:33:47 EST


+cc Mark & Kristen

Commit cd2fe83a815 by Mark added the code we're changing here, so this
is your chance to speak up if we're not doing the right thing :)

On Fri, Sep 7, 2012 at 4:28 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
> On Fri, Sep 7, 2012 at 2:28 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote:
>> From: Oliver Neukum <oliver@xxxxxxxxxx>
>> Subject: pciehp: always implement resume
>>
>> The driver by default ignores resume. On some laptops
>> that means that interrupts are not delivered after S3.
>> So card removals and insertions will not be handled. Requiring
>> a forced load isn't right.
>>
>> Signed-off-by: Oliver Neukum <oneukum@xxxxxxx>
>> Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx>
>
> I applied this (with fixed From: email address and slightly modified
> changelog) to http://git.kernel.org/?p=linux/kernel/git/helgaas/pci.git;a=shortlog;h=refs/heads/pci/oliver-pciehp-resume
> and will merge it to "next" after Fengguang's build/smoke tests.
>
> Thanks!
>
> Bjorn
>
>> ---
>> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++--------------
>> drivers/pci/hotplug/pciehp_core.c | 28 ++++++++++++++--------------
>> 1 file changed, 14 insertions(+), 14 deletions(-)
>>
>> Index: linux/drivers/pci/hotplug/pciehp_core.c
>> ===================================================================
>> --- linux.orig/drivers/pci/hotplug/pciehp_core.c
>> +++ linux/drivers/pci/hotplug/pciehp_core.c
>> @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_d
>>
>> static int pciehp_resume (struct pcie_device *dev)
>> {
>> + struct controller *ctrl;
>> + struct slot *slot;
>> + u8 status;
>> +
>> dev_info(&dev->device, "%s ENTRY\n", __func__);
>> - if (pciehp_force) {
>> - struct controller *ctrl = get_service_data(dev);
>> - struct slot *slot;
>> - u8 status;
>> + ctrl = get_service_data(dev);
>>
>> - /* reinitialize the chipset's event detection logic */
>> - pcie_enable_notification(ctrl);
>> + /* reinitialize the chipset's event detection logic */
>> + pcie_enable_notification(ctrl);
>>
>> - slot = ctrl->slot;
>> + slot = ctrl->slot;
>>
>> - /* Check if slot is occupied */
>> - pciehp_get_adapter_status(slot, &status);
>> - if (status)
>> - pciehp_enable_slot(slot);
>> - else
>> - pciehp_disable_slot(slot);
>> - }
>> + /* Check if slot is occupied */
>> + pciehp_get_adapter_status(slot, &status);
>> + if (status)
>> + pciehp_enable_slot(slot);
>> + else
>> + pciehp_disable_slot(slot);
>> return 0;
>> }
>> #endif /* PM */
--
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/