* [3.10][PATCH 0/4] resume reset fixes for stable 3.10
@ 2013-08-25 9:49 Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 1/4] mei: me: fix reset state machine Tomas Winkler
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Tomas Winkler @ 2013-08-25 9:49 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler
Tomas Winkler (4):
mei: me: fix reset state machine
mei: don't have to clean the state on power up
mei: me: fix waiting for hw ready
mei: me: fix hardware reset flow
drivers/misc/mei/hw-me.c | 22 +++++++++++++---------
drivers/misc/mei/init.c | 3 ++-
2 files changed, 15 insertions(+), 10 deletions(-)
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [3.10][PATCH 1/4] mei: me: fix reset state machine
2013-08-25 9:49 [3.10][PATCH 0/4] resume reset fixes for stable 3.10 Tomas Winkler
@ 2013-08-25 9:49 ` Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 2/4] mei: don't have to clean the state on power up Tomas Winkler
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2013-08-25 9:49 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler, stable
stable: 3.10
commit 315a383ad7dbd484fafb93ef08038e3dbafbb7a8 upstream
ME HW ready bit is down after hw reset was asserted or on error.
Only on error we need to enter the reset flow, additional reset
need to be prevented when reset was triggered during
initialization , power up/down or a reset is already in progress
Cc: stable@vger.kernel.org
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>
---
drivers/misc/mei/hw-me.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 822170f..0310859 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -482,7 +482,9 @@ irqreturn_t mei_me_irq_thread_handler(int irq, void *dev_id)
/* check if ME wants a reset */
if (!mei_hw_is_ready(dev) &&
dev->dev_state != MEI_DEV_RESETTING &&
- dev->dev_state != MEI_DEV_INITIALIZING) {
+ dev->dev_state != MEI_DEV_INITIALIZING &&
+ dev->dev_state != MEI_DEV_POWER_DOWN &&
+ dev->dev_state != MEI_DEV_POWER_UP) {
dev_dbg(&dev->pdev->dev, "FW not ready.\n");
mei_reset(dev, 1);
mutex_unlock(&dev->device_lock);
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [3.10][PATCH 2/4] mei: don't have to clean the state on power up
2013-08-25 9:49 [3.10][PATCH 0/4] resume reset fixes for stable 3.10 Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 1/4] mei: me: fix reset state machine Tomas Winkler
@ 2013-08-25 9:49 ` Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 3/4] mei: me: fix waiting for hw ready Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 4/4] mei: me: fix hardware reset flow Tomas Winkler
3 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2013-08-25 9:49 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler, stable
stable: 3.10
commit 99f22c4ef24cf87b0dae6aabe6b5e620b62961d9 upstream
When powering up, we don't have to clean up the device state
nothing is connected.
Cc: stable@vger.kernel.org
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>
---
drivers/misc/mei/init.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
index f580d30..6eec689 100644
--- a/drivers/misc/mei/init.c
+++ b/drivers/misc/mei/init.c
@@ -143,7 +143,8 @@ void mei_reset(struct mei_device *dev, int interrupts_enabled)
dev->hbm_state = MEI_HBM_IDLE;
- if (dev->dev_state != MEI_DEV_INITIALIZING) {
+ if (dev->dev_state != MEI_DEV_INITIALIZING &&
+ dev->dev_state != MEI_DEV_POWER_UP) {
if (dev->dev_state != MEI_DEV_DISABLED &&
dev->dev_state != MEI_DEV_POWER_DOWN)
dev->dev_state = MEI_DEV_RESETTING;
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [3.10][PATCH 3/4] mei: me: fix waiting for hw ready
2013-08-25 9:49 [3.10][PATCH 0/4] resume reset fixes for stable 3.10 Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 1/4] mei: me: fix reset state machine Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 2/4] mei: don't have to clean the state on power up Tomas Winkler
@ 2013-08-25 9:49 ` Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 4/4] mei: me: fix hardware reset flow Tomas Winkler
3 siblings, 0 replies; 7+ messages in thread
From: Tomas Winkler @ 2013-08-25 9:49 UTC (permalink / raw)
To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler, stable
stable: 3.10
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
Cc: stable@vger.kernel.org
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>
---
drivers/misc/mei/hw-me.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 0310859..700fe55 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)
if (mei_me_hw_is_ready(dev))
return 0;
+ dev->recvd_hw_ready = false;
mutex_unlock(&dev->device_lock);
err = wait_event_interruptible_timeout(dev->wait_hw_ready,
- dev->recvd_hw_ready, MEI_INTEROP_TIMEOUT);
+ dev->recvd_hw_ready,
+ mei_secs_to_jiffies(MEI_INTEROP_TIMEOUT));
mutex_lock(&dev->device_lock);
if (!err && !dev->recvd_hw_ready) {
+ if (!err)
+ err = -ETIMEDOUT;
dev_err(&dev->pdev->dev,
- "wait hw ready failed. status = 0x%x\n", err);
- return -ETIMEDOUT;
+ "wait hw ready failed. status = %d\n", err);
+ return err;
}
dev->recvd_hw_ready = false;
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [3.10][PATCH 4/4] mei: me: fix hardware reset flow
2013-08-25 9:49 [3.10][PATCH 0/4] resume reset fixes for stable 3.10 Tomas Winkler
` (2 preceding siblings ...)
2013-08-25 9:49 ` [3.10][PATCH 3/4] mei: me: fix waiting for hw ready Tomas Winkler
@ 2013-08-25 9:49 ` Tomas Winkler
2013-08-26 18:55 ` Greg KH
3 siblings, 1 reply; 7+ messages in thread
From: Tomas Winkler @ 2013-08-25 9:49 UTC (permalink / raw)
To: gregkh
Cc: arnd, linux-kernel, Tomas Winkler, stable, Shuah Khan,
Konstantin Khlebnikov
stable: 3.10
commit ff96066e3171acdea356b331163495957cb833d0 char-misc
Both H_IS and H_IE needs to be set to receive H_RDY
interrupt
1. Assert H_IS to clear the interrupts during hw reset
and use mei_me_reg_write instead of mei_hcsr_set as the later
strips down the H_IS
2. fix interrupt disablement embarrassing typo
hcsr |= ~H_IE -> hcsr &= ~H_IE;
this will remove the unwanted interrupt on power down
3. remove useless debug print outs
Cc: stable@vger.kernel.org
Cc: Shuah Khan <shuah.kh@samsung.com>
Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Conflicts:
drivers/misc/mei/hw-me.c
---
drivers/misc/mei/hw-me.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 700fe55..1bf3f8b 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -176,16 +176,14 @@ static void mei_me_hw_reset(struct mei_device *dev, bool intr_enable)
struct mei_me_hw *hw = to_me_hw(dev);
u32 hcsr = mei_hcsr_read(hw);
- dev_dbg(&dev->pdev->dev, "before reset HCSR = 0x%08x.\n", hcsr);
-
- hcsr |= (H_RST | H_IG);
+ hcsr |= H_RST | H_IG | H_IS;
if (intr_enable)
hcsr |= H_IE;
else
- hcsr |= ~H_IE;
+ hcsr &= ~H_IE;
- mei_hcsr_set(hw, hcsr);
+ mei_me_reg_write(hw, H_CSR, hcsr);
if (dev->dev_state == MEI_DEV_POWER_DOWN)
mei_me_hw_reset_release(dev);
--
1.8.1.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [3.10][PATCH 4/4] mei: me: fix hardware reset flow
2013-08-25 9:49 ` [3.10][PATCH 4/4] mei: me: fix hardware reset flow Tomas Winkler
@ 2013-08-26 18:55 ` Greg KH
2013-08-27 9:14 ` Winkler, Tomas
0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2013-08-26 18:55 UTC (permalink / raw)
To: Tomas Winkler
Cc: arnd, linux-kernel, stable, Shuah Khan, Konstantin Khlebnikov
On Sun, Aug 25, 2013 at 12:49:49PM +0300, Tomas Winkler wrote:
> stable: 3.10
> commit ff96066e3171acdea356b331163495957cb833d0 char-misc
Sorry, but I have to wait until the patch hits Linus's tree before I can
accept it into a stable tree, you know that :(
> Both H_IS and H_IE needs to be set to receive H_RDY
> interrupt
>
> 1. Assert H_IS to clear the interrupts during hw reset
> and use mei_me_reg_write instead of mei_hcsr_set as the later
> strips down the H_IS
>
> 2. fix interrupt disablement embarrassing typo
> hcsr |= ~H_IE -> hcsr &= ~H_IE;
> this will remove the unwanted interrupt on power down
>
> 3. remove useless debug print outs
>
> Cc: stable@vger.kernel.org
> Cc: Shuah Khan <shuah.kh@samsung.com>
> Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> Conflicts:
> drivers/misc/mei/hw-me.c
What's this for?
I'll wait for this to hit Linus's tree during the 3.12-rc1 merge window
and then add it to the 3.10-stable tree, ok?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [3.10][PATCH 4/4] mei: me: fix hardware reset flow
2013-08-26 18:55 ` Greg KH
@ 2013-08-27 9:14 ` Winkler, Tomas
0 siblings, 0 replies; 7+ messages in thread
From: Winkler, Tomas @ 2013-08-27 9:14 UTC (permalink / raw)
To: Greg KH; +Cc: arnd, linux-kernel, stable, Shuah Khan, Konstantin Khlebnikov
>
> On Sun, Aug 25, 2013 at 12:49:49PM +0300, Tomas Winkler wrote:
> > stable: 3.10
> > commit ff96066e3171acdea356b331163495957cb833d0 char-misc
>
> Sorry, but I have to wait until the patch hits Linus's tree before I can accept it
> into a stable tree, you know that :(
>
Yes I understand the process, though this patch was intended upstream I marked it 3.11 https://lkml.org/lkml/2013/7/30/117.
So I just advice distors to pick it for their 3.10
Thanks
Tomas.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-08-27 9:14 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-25 9:49 [3.10][PATCH 0/4] resume reset fixes for stable 3.10 Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 1/4] mei: me: fix reset state machine Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 2/4] mei: don't have to clean the state on power up Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 3/4] mei: me: fix waiting for hw ready Tomas Winkler
2013-08-25 9:49 ` [3.10][PATCH 4/4] mei: me: fix hardware reset flow Tomas Winkler
2013-08-26 18:55 ` Greg KH
2013-08-27 9:14 ` Winkler, Tomas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®