diff mbox

pciehp: always implement resume

Message ID 1343827778-26092-1-git-send-email-oliver@neukum.org (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Oliver Neukum Aug. 1, 2012, 1:29 p.m. UTC
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@suse.de>
---
 drivers/pci/hotplug/pciehp_core.c |   28 ++++++++++++++--------------
 1 files changed, 14 insertions(+), 14 deletions(-)

Comments

Rafael Wysocki Aug. 4, 2012, 9:52 p.m. UTC | #1
On Wednesday, August 01, 2012, Oliver Neukum wrote:
> 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@suse.de>

Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl>

> ---
>  drivers/pci/hotplug/pciehp_core.c |   28 ++++++++++++++--------------
>  1 files changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
> index 365c6b9..916bf4f 100644
> --- a/drivers/pci/hotplug/pciehp_core.c
> +++ b/drivers/pci/hotplug/pciehp_core.c
> @@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_device *dev)
>  
>  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-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
index 365c6b9..916bf4f 100644
--- a/drivers/pci/hotplug/pciehp_core.c
+++ b/drivers/pci/hotplug/pciehp_core.c
@@ -300,24 +300,24 @@  static int pciehp_suspend (struct pcie_device *dev)
 
 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 */