Re: [Resend][PATCH] pciehp: always implement resume
From: Bjorn Helgaas
Date: Fri Sep 07 2012 - 23:02:14 EST
[fix Kristen's email addr]
On Fri, Sep 7, 2012 at 5:33 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
> +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/