Patchwork [1/2] Revert "PCI/PME: Implement runtime PM callbacks"

login
register
mail settings
Submitter Mika Westerberg
Date Jan. 7, 2019, 2:39 p.m.
Message ID <20190107143959.75267-2-mika.westerberg@linux.intel.com>
Download mbox | patch
Permalink /patch/693923/
State New
Headers show

Comments

Mika Westerberg - Jan. 7, 2019, 2:39 p.m.
This reverts commit 0e157e52860441cb26051f131dd0b5ae3187a07b.

Heiner reported that the commit in question prevents his network adapter
from triggering PME and waking up when network cable is plugged.

The commit tried to prevent root port waking up from D3cold immediately
but looks like disabing root port PME interrupt is not the right way to
fix that issue so revert it now. The patch following proposes an
alternative solution to that issue.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=202103
Fixes: 0e157e528604 ("PCI/PME: Implement runtime PM callbacks")
Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
 drivers/pci/pcie/pme.c | 27 ---------------------------
 1 file changed, 27 deletions(-)
Rafael J. Wysocki - Jan. 7, 2019, 10:26 p.m.
On Monday, January 7, 2019 3:39:58 PM CET Mika Westerberg wrote:
> This reverts commit 0e157e52860441cb26051f131dd0b5ae3187a07b.
> 
> Heiner reported that the commit in question prevents his network adapter
> from triggering PME and waking up when network cable is plugged.
> 
> The commit tried to prevent root port waking up from D3cold immediately
> but looks like disabing root port PME interrupt is not the right way to
> fix that issue so revert it now. The patch following proposes an
> alternative solution to that issue.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=202103
> Fixes: 0e157e528604 ("PCI/PME: Implement runtime PM callbacks")
> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

> ---
>  drivers/pci/pcie/pme.c | 27 ---------------------------
>  1 file changed, 27 deletions(-)
> 
> diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
> index 0dbcf429089f..1a8b85051b1b 100644
> --- a/drivers/pci/pcie/pme.c
> +++ b/drivers/pci/pcie/pme.c
> @@ -432,31 +432,6 @@ static void pcie_pme_remove(struct pcie_device *srv)
>  	kfree(get_service_data(srv));
>  }
>  
> -static int pcie_pme_runtime_suspend(struct pcie_device *srv)
> -{
> -	struct pcie_pme_service_data *data = get_service_data(srv);
> -
> -	spin_lock_irq(&data->lock);
> -	pcie_pme_interrupt_enable(srv->port, false);
> -	pcie_clear_root_pme_status(srv->port);
> -	data->noirq = true;
> -	spin_unlock_irq(&data->lock);
> -
> -	return 0;
> -}
> -
> -static int pcie_pme_runtime_resume(struct pcie_device *srv)
> -{
> -	struct pcie_pme_service_data *data = get_service_data(srv);
> -
> -	spin_lock_irq(&data->lock);
> -	pcie_pme_interrupt_enable(srv->port, true);
> -	data->noirq = false;
> -	spin_unlock_irq(&data->lock);
> -
> -	return 0;
> -}
> -
>  static struct pcie_port_service_driver pcie_pme_driver = {
>  	.name		= "pcie_pme",
>  	.port_type	= PCI_EXP_TYPE_ROOT_PORT,
> @@ -464,8 +439,6 @@ static struct pcie_port_service_driver pcie_pme_driver = {
>  
>  	.probe		= pcie_pme_probe,
>  	.suspend	= pcie_pme_suspend,
> -	.runtime_suspend = pcie_pme_runtime_suspend,
> -	.runtime_resume	= pcie_pme_runtime_resume,
>  	.resume		= pcie_pme_resume,
>  	.remove		= pcie_pme_remove,
>  };
>

Patch

diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index 0dbcf429089f..1a8b85051b1b 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -432,31 +432,6 @@  static void pcie_pme_remove(struct pcie_device *srv)
 	kfree(get_service_data(srv));
 }
 
-static int pcie_pme_runtime_suspend(struct pcie_device *srv)
-{
-	struct pcie_pme_service_data *data = get_service_data(srv);
-
-	spin_lock_irq(&data->lock);
-	pcie_pme_interrupt_enable(srv->port, false);
-	pcie_clear_root_pme_status(srv->port);
-	data->noirq = true;
-	spin_unlock_irq(&data->lock);
-
-	return 0;
-}
-
-static int pcie_pme_runtime_resume(struct pcie_device *srv)
-{
-	struct pcie_pme_service_data *data = get_service_data(srv);
-
-	spin_lock_irq(&data->lock);
-	pcie_pme_interrupt_enable(srv->port, true);
-	data->noirq = false;
-	spin_unlock_irq(&data->lock);
-
-	return 0;
-}
-
 static struct pcie_port_service_driver pcie_pme_driver = {
 	.name		= "pcie_pme",
 	.port_type	= PCI_EXP_TYPE_ROOT_PORT,
@@ -464,8 +439,6 @@  static struct pcie_port_service_driver pcie_pme_driver = {
 
 	.probe		= pcie_pme_probe,
 	.suspend	= pcie_pme_suspend,
-	.runtime_suspend = pcie_pme_runtime_suspend,
-	.runtime_resume	= pcie_pme_runtime_resume,
 	.resume		= pcie_pme_resume,
 	.remove		= pcie_pme_remove,
 };