Message ID | 1455732218-27283-2-git-send-email-qipeng.zha@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Thu, Feb 18, 2016 at 02:03:38AM +0800, Qipeng Zha wrote: > During legacy suspend flow, IPC1 commands are being requested > from opregion driver. But the PMC_IPC1 command will timeout as example: > > [ 281.444600] ipc_debug##: ipc_send_command: cmd=0x201ff, > [ 281.444648] wbuf[0]=0x4ea6 > [ 281.444668] wbuf[1]=0x0 > [ 281.444674] wbuf[2]=0x0 > [ 281.444676] wbuf[3]=0x0 > [ 284.446467] pmc-ipc-plat INT34D2:00: IPC timed out, TS=0x4, CMD=0x200ff > > This is because before the opregion driver could send IPC1 commands, > the PMC_IPC irq is already suspended. Which makes the IPC command to > timeout. > > Solution: register pmc_ipc irq as IRQF_NO_SUSPEND > > Signed-off-by: Ananth Krishna R <ananth.krishna.r@intel.com> > Signed-off-by: Bharath K Veera <bharath.k.veera@intel.com> > Signed-off-by: Qipeng Zha <qipeng.zha@intel.com> Qipeng, who wrote this patch? This is the one I need a Signed-off-by from. Feel free to credit the others with concept, debug, testing in the commit message, but the Signed-off-by indicates authorship and the path the patch took to mainline. > --- > drivers/platform/x86/intel_pmc_ipc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c > index abdf67c..140aa77 100644 > --- a/drivers/platform/x86/intel_pmc_ipc.c > +++ b/drivers/platform/x86/intel_pmc_ipc.c > @@ -731,7 +731,8 @@ static int ipc_plat_probe(struct platform_device *pdev) > goto err_device; > } > > - if (request_irq(ipcdev.irq, ioc, 0, "intel_pmc_ipc", &ipcdev)) { > + if (request_irq(ipcdev.irq, ioc, IRQF_NO_SUSPEND, > + "intel_pmc_ipc", &ipcdev)) { > dev_err(&pdev->dev, "Failed to request irq\n"); > ret = -EBUSY; > goto err_irq; > -- > 1.8.3.2 > >
diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c index abdf67c..140aa77 100644 --- a/drivers/platform/x86/intel_pmc_ipc.c +++ b/drivers/platform/x86/intel_pmc_ipc.c @@ -731,7 +731,8 @@ static int ipc_plat_probe(struct platform_device *pdev) goto err_device; } - if (request_irq(ipcdev.irq, ioc, 0, "intel_pmc_ipc", &ipcdev)) { + if (request_irq(ipcdev.irq, ioc, IRQF_NO_SUSPEND, + "intel_pmc_ipc", &ipcdev)) { dev_err(&pdev->dev, "Failed to request irq\n"); ret = -EBUSY; goto err_irq;