Add ata port runtime suspend/resume/idle callbacks.
Set ->eh_noresume to skip the runtime PM calls on scsi host
in the error handler to avoid dead lock.
Signed-off-by: Lin Ming<ming.m.lin@xxxxxxxxx>
---
drivers/ata/libata-core.c | 10 ++++++++++
drivers/ata/libata-scsi.c | 1 +
drivers/ata/libata-transport.c | 4 ++++
3 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c[...]
index 04c208e..15a3d4d 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -5307,9 +5308,18 @@ static int ata_port_resume(struct device *dev)
return rc;
}
+static int ata_port_runtime_idle(struct device *dev)
+{
+ return pm_runtime_suspend(dev);
+}
+
static const struct dev_pm_ops ata_port_pm_ops = {
.suspend = ata_port_suspend,
.resume = ata_port_resume,
+
+ .runtime_suspend = ata_port_suspend_common,
+ .runtime_resume = ata_port_resume,
+ .runtime_idle = ata_port_runtime_idle,