summaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorAlexander Usyskin <alexander.usyskin@intel.com>2015-01-25 16:45:28 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-02-03 18:48:51 -0500
commit663b7ee9517eec6deea9a48c7a1392a9a34f7809 (patch)
treeee60e113a4f59ca265f85f22dab564972a659d6a /drivers/misc
parent1ab1e79b9fd4b01331490bbe2e630a0fc0b25449 (diff)
mei: me: release hw from reset only during the reset flow
We might enter the interrupt handler with hw_ready already set, but prior we actually started the reset flow. To soleve this we move the reset release from the interrupt handler to the HW start wait function which is part of the reset sequence. Cc: <stable@vger.kernel.org> #3.10+ 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>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/mei/hw-me.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index ccc1b405ca21..f8fd503dfbd6 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -335,6 +335,7 @@ static int mei_me_hw_ready_wait(struct mei_device *dev)
335 return -ETIME; 335 return -ETIME;
336 } 336 }
337 337
338 mei_me_hw_reset_release(dev);
338 dev->recvd_hw_ready = false; 339 dev->recvd_hw_ready = false;
339 return 0; 340 return 0;
340} 341}
@@ -731,9 +732,7 @@ irqreturn_t mei_me_irq_thread_handler(int irq, void *dev_id)
731 /* check if we need to start the dev */ 732 /* check if we need to start the dev */
732 if (!mei_host_is_ready(dev)) { 733 if (!mei_host_is_ready(dev)) {
733 if (mei_hw_is_ready(dev)) { 734 if (mei_hw_is_ready(dev)) {
734 mei_me_hw_reset_release(dev);
735 dev_dbg(dev->dev, "we need to start the dev.\n"); 735 dev_dbg(dev->dev, "we need to start the dev.\n");
736
737 dev->recvd_hw_ready = true; 736 dev->recvd_hw_ready = true;
738 wake_up(&dev->wait_hw_ready); 737 wake_up(&dev->wait_hw_ready);
739 } else { 738 } else {