Re: [PATCH] PCI/LINK: Disable bandwidth notification interrupt during suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 15, 2019 at 11:41:42AM +0300, Mika Westerberg wrote:
> If the bandwidth notification interrupt is left unmasked when entering
> suspend to idle it triggers immediately bringing the system back to
> working state.
> 
> To keep that from happening, disable the interrupt when entering system
> sleep and enable it again during resume.
> 
> Reported-by: Imre Deak <imre.deak@xxxxxxxxx>
> Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>

Applied to pci/portdrv for v5.2, thanks, Mika.

> ---
>  drivers/pci/pcie/bw_notification.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/pci/pcie/bw_notification.c b/drivers/pci/pcie/bw_notification.c
> index 4fa9e3523ee1..77e685771487 100644
> --- a/drivers/pci/pcie/bw_notification.c
> +++ b/drivers/pci/pcie/bw_notification.c
> @@ -107,11 +107,25 @@ static void pcie_bandwidth_notification_remove(struct pcie_device *srv)
>  	free_irq(srv->irq, srv);
>  }
>  
> +static int pcie_bandwidth_notification_suspend(struct pcie_device *srv)
> +{
> +	pcie_disable_link_bandwidth_notification(srv->port);
> +	return 0;
> +}
> +
> +static int pcie_bandwidth_notification_resume(struct pcie_device *srv)
> +{
> +	pcie_enable_link_bandwidth_notification(srv->port);
> +	return 0;
> +}
> +
>  static struct pcie_port_service_driver pcie_bandwidth_notification_driver = {
>  	.name		= "pcie_bw_notification",
>  	.port_type	= PCIE_ANY_PORT,
>  	.service	= PCIE_PORT_SERVICE_BWNOTIF,
>  	.probe		= pcie_bandwidth_notification_probe,
> +	.suspend	= pcie_bandwidth_notification_suspend,
> +	.resume		= pcie_bandwidth_notification_resume,
>  	.remove		= pcie_bandwidth_notification_remove,
>  };
>  
> -- 
> 2.20.1
> 



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux