[3.13.y.z extended stable] Patch "mei: me: read H_CSR after asserting reset" has been added to staging queue
Kamal Mostafa
kamal at canonical.com
Tue Jul 15 21:29:23 UTC 2014
This is a note to let you know that I have just added a patch titled
mei: me: read H_CSR after asserting reset
to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree
which can be found at:
http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.13.y-queue
This patch is scheduled to be released in version 3.13.11.5.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.13.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Kamal
------
>From b53d35a834513ec9ba57259a3f1bb0a8eead5fc5 Mon Sep 17 00:00:00 2001
From: Tomas Winkler <tomas.winkler at intel.com>
Date: Mon, 12 May 2014 12:19:41 +0300
Subject: mei: me: read H_CSR after asserting reset
commit c40765d919d25d2d44d99c4ce39e48808f137e1e upstream.
According the spec the host should read H_CSR again
after asserting reset H_RST to ensure that reset was
read by the firmware
Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin at intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
[ kamal: backport to 3.13-stable: also includes mei_me_hw_reset() change from
33ec082 mei: revamp mei reset state machine ]
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
drivers/misc/mei/hw-me.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 4835edc..cbc9187 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -189,7 +189,19 @@ static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable)
dev->recvd_hw_ready = false;
mei_me_reg_write(hw, H_CSR, hcsr);
- if (dev->dev_state == MEI_DEV_POWER_DOWN)
+ /*
+ * Host reads the H_CSR once to ensure that the
+ * posted write to H_CSR completes.
+ */
+ hcsr = mei_hcsr_read(hw);
+
+ if ((hcsr & H_RST) == 0)
+ dev_warn(&dev->pdev->dev, "H_RST is not set = 0x%08X", hcsr);
+
+ if ((hcsr & H_RDY) == H_RDY)
+ dev_warn(&dev->pdev->dev, "H_RDY is not cleared 0x%08X", hcsr);
+
+ if (intr_enable == false)
mei_me_hw_reset_release(dev);
return 0;
--
1.9.1
More information about the kernel-team
mailing list