diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c index 055b7cd933e6..64d058c96d83 100644 --- a/drivers/scsi/scsi_pm.c +++ b/drivers/scsi/scsi_pm.c @@ -84,8 +84,20 @@ static int scsi_dev_type_resume(struct device *dev, if (err == 0 && (cb != do_scsi_runtime_resume)) { pm_runtime_disable(dev); - pm_runtime_set_active(dev); + err = pm_runtime_set_active(dev); pm_runtime_enable(dev); + + if (!err && scsi_is_sdev_device(dev)) { + struct scsi_device *sdev = to_scsi_device(dev); + + /* + * If scsi device runtime PM is managed by block layer + * then we should update request queue's runtime status + * as well. + */ + if (sdev->request_queue->dev) + blk_post_runtime_resume(sdev->request_queue, 0); + } } return err;