aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/mei
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2013-07-17 08:13:17 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-29 12:47:40 -0400
commit644f5d570740c90439fdf69e8b47647584c6dc2f (patch)
treee741ce5e178dcb8721ee1fce4f1661543e6b2f87 /drivers/misc/mei
parent47e1cf336bc708bb59ebfcc01540dffecd16862e (diff)
mei: me: fix waiting for hw ready
commit dab9bf41b23fe700c4a74133e41eb6a21706031e upstream. 1. MEI_INTEROP_TIMEOUT is in seconds not in jiffies so we use mei_secs_to_jiffies macro While cold boot is fast this is relevant in resume 2. wait_event_interruptible_timeout can return with -ERESTARTSYS so do not override it with -ETIMEDOUT 3.Adjust error message Tested-by: Shuah Khan <shuah.kh@samsung.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')
-rw-r--r--drivers/misc/mei/hw-me.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 03108591c139..700fe55095ba 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -238,14 +238,18 @@ static int mei_me_hw_ready_wait(struct mei_device *dev)
238 if (mei_me_hw_is_ready(dev)) 238 if (mei_me_hw_is_ready(dev))
239 return 0; 239 return 0;
240 240
241 dev->recvd_hw_ready = false;
241 mutex_unlock(&dev->device_lock); 242 mutex_unlock(&dev->device_lock);
242 err = wait_event_interruptible_timeout(dev->wait_hw_ready, 243 err = wait_event_interruptible_timeout(dev->wait_hw_ready,
243 dev->recvd_hw_ready, MEI_INTEROP_TIMEOUT); 244 dev->recvd_hw_ready,
245 mei_secs_to_jiffies(MEI_INTEROP_TIMEOUT));
244 mutex_lock(&dev->device_lock); 246 mutex_lock(&dev->device_lock);
245 if (!err && !dev->recvd_hw_ready) { 247 if (!err && !dev->recvd_hw_ready) {
248 if (!err)
249 err = -ETIMEDOUT;
246 dev_err(&dev->pdev->dev, 250 dev_err(&dev->pdev->dev,
247 "wait hw ready failed. status = 0x%x\n", err); 251 "wait hw ready failed. status = %d\n", err);
248 return -ETIMEDOUT; 252 return err;
249 } 253 }
250 254
251 dev->recvd_hw_ready = false; 255 dev->recvd_hw_ready = false;