diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2013-07-17 08:13:17 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-29 12:47:40 -0400 |
commit | 644f5d570740c90439fdf69e8b47647584c6dc2f (patch) | |
tree | e741ce5e178dcb8721ee1fce4f1661543e6b2f87 /drivers/misc/mei | |
parent | 47e1cf336bc708bb59ebfcc01540dffecd16862e (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.c | 10 |
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; |