aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/mei/pci-me.c
diff options
context:
space:
mode:
authorAlexander Usyskin <alexander.usyskin@intel.com>2016-06-16 17:58:52 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-08-30 14:36:39 +0200
commit77537ad2917bbca0a73ee6ebd44fc0ce5416d590 (patch)
treec9bd6250496ac139ed82e9639c6ea7dd70aa8168 /drivers/misc/mei/pci-me.c
parentmei: drop mei_io_cb_alloc_buf (diff)
downloadlinux-dev-77537ad2917bbca0a73ee6ebd44fc0ce5416d590.tar.xz
linux-dev-77537ad2917bbca0a73ee6ebd44fc0ce5416d590.zip
mei: recover after errors in runtime pm flow
Schedule link reset if failed to perform runtime suspend or resume. Set active runtime pm stte on link reset to clean runtimr pm error, if present. Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/pci-me.c')
-rw-r--r--drivers/misc/mei/pci-me.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 64e64da6da44..718addfa9fb0 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -400,6 +400,9 @@ static int mei_me_pm_runtime_suspend(struct device *device)
dev_dbg(&pdev->dev, "rpm: me: runtime suspend ret=%d\n", ret);
+ if (ret && ret != -EAGAIN)
+ schedule_work(&dev->reset_work);
+
return ret;
}
@@ -423,6 +426,9 @@ static int mei_me_pm_runtime_resume(struct device *device)
dev_dbg(&pdev->dev, "rpm: me: runtime resume ret = %d\n", ret);
+ if (ret)
+ schedule_work(&dev->reset_work);
+
return ret;
}