Re: [Resend][PATCH] pciehp: always implement resume
From: Bjorn Helgaas
Date: Fri Sep 07 2012 - 19:28:49 EST
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/