浏览代码

mei: request autosuspend at the end of write

On longer non-blocking write might not complete at the end of
autosuspend expiration, therefore we request autosuspend
again on the write completion.

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>
Alexander Usyskin 10 年之前
父节点
当前提交
a1809d3890
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      drivers/misc/mei/client.c

+ 7 - 1
drivers/misc/mei/client.c

@@ -1459,12 +1459,18 @@ err:
  */
  */
 void mei_cl_complete(struct mei_cl *cl, struct mei_cl_cb *cb)
 void mei_cl_complete(struct mei_cl *cl, struct mei_cl_cb *cb)
 {
 {
+	struct mei_device *dev = cl->dev;
+
 	switch (cb->fop_type) {
 	switch (cb->fop_type) {
 	case MEI_FOP_WRITE:
 	case MEI_FOP_WRITE:
 		mei_io_cb_free(cb);
 		mei_io_cb_free(cb);
 		cl->writing_state = MEI_WRITE_COMPLETE;
 		cl->writing_state = MEI_WRITE_COMPLETE;
-		if (waitqueue_active(&cl->tx_wait))
+		if (waitqueue_active(&cl->tx_wait)) {
 			wake_up_interruptible(&cl->tx_wait);
 			wake_up_interruptible(&cl->tx_wait);
+		} else {
+			pm_runtime_mark_last_busy(dev->dev);
+			pm_request_autosuspend(dev->dev);
+		}
 		break;
 		break;
 
 
 	case MEI_FOP_READ:
 	case MEI_FOP_READ: