Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-09-02 Thread Jaehoon Chung
Hi,

On 09/03/2014 11:10 AM, Fu, Zhonghui wrote:
> 
> Hi,Uffe
> 
> Could you please tell me into which git repository this patch is merged now?

I knew it was merged into Ulf's git repository.
You can refer to below git.

url = http://git.linaro.org/git/people/ulf.hansson/mmc.git


Best Regards,
Jaehoon Chung
> 
> 
> 
> Thanks,
> Zhonghui 
> 
> 
> 
> On 2014/8/26 0:10, Fu, Zhonghui wrote:
>>
>> Many thanks for your helps.
>>
>>
>>
>> Thanks,
>> Zhonghui
>>
>>
>> On 2014/8/18 20:07, Ulf Hansson wrote:
>>> On 18 August 2014 05:04, Fu, Zhonghui  wrote:
>>>> From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
>>>> From: Fu Zhonghui 
>>>> Date: Mon, 18 Aug 2014 10:48:14 +0800
>>>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>>>> sdio thread
>>>>
>>>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>>>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>>>> the use of our own custom threaded IRQ handler, but left in an
>>>> unconditional wake_up_process() on that handler at resume-time.
>>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>>>
>>>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>>>> before enable sdio IRQ.
>>>>
>>>> Signed-off-by: Jaehoon Chung 
>>>> Signed-off-by: Chris Ball 
>>>> Signed-off-by: Ulf Hansson 
>>>> Signed-off-by: Fu Zhonghui 
>>> Thanks! Applied for next and added a stable tag for v3.16+.
>>>
>>> Kind regards
>>> Uffe
>>>
>>>> ---
>>>>  drivers/mmc/core/sdio.c |   12 ++--
>>>>  drivers/mmc/core/sdio_irq.c |4 ++--
>>>>  2 files changed, 12 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>>>> index e636d9e..3fc40a7 100644
>>>> --- a/drivers/mmc/core/sdio.c
>>>> +++ b/drivers/mmc/core/sdio.c
>>>> @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
>>>> }
>>>> }
>>>>
>>>> -   if (!err && host->sdio_irqs)
>>>> -   wake_up_process(host->sdio_irq_thread);
>>>> +   if (!err && host->sdio_irqs) {
>>>> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>>>> +   wake_up_process(host->sdio_irq_thread);
>>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>>> +   mmc_host_clk_hold(host);
>>>> +   host->ops->enable_sdio_irq(host, 1);
>>>> +   mmc_host_clk_release(host);
>>>> +   }
>>>> +   }
>>>> +
>>>> mmc_release_host(host);
>>>>
>>>> host->pm_flags &= ~MMC_PM_KEEP_POWER;
>>>> diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
>>>> index 5cc13c8..696eca4 100644
>>>> --- a/drivers/mmc/core/sdio_irq.c
>>>> +++ b/drivers/mmc/core/sdio_irq.c
>>>> @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
>>>> host->sdio_irqs--;
>>>> return err;
>>>> }
>>>> -   } else {
>>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>>> mmc_host_clk_hold(host);
>>>>         host->ops->enable_sdio_irq(host, 1);
>>>>     mmc_host_clk_release(host);
>>>> @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
>>>> if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>>>> atomic_set(>sdio_irq_thread_abort, 1);
>>>> kthread_stop(host->sdio_irq_thread);
>>>> -   } else {
>>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>>> mmc_host_clk_hold(host);
>>>> host->ops->enable_sdio_irq(host, 0);
>>>> mmc_host_clk_release(host);
>>>> -- 1.7.1
>>>>
>>>> 

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-09-02 Thread Fu, Zhonghui

Hi,Uffe

Could you please tell me into which git repository this patch is merged now?



Thanks,
Zhonghui 



On 2014/8/26 0:10, Fu, Zhonghui wrote:
>
> Many thanks for your helps.
>
>
>
> Thanks,
> Zhonghui
>
>
> On 2014/8/18 20:07, Ulf Hansson wrote:
>> On 18 August 2014 05:04, Fu, Zhonghui  wrote:
>>> From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
>>> From: Fu Zhonghui 
>>> Date: Mon, 18 Aug 2014 10:48:14 +0800
>>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>>> sdio thread
>>>
>>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>>> the use of our own custom threaded IRQ handler, but left in an
>>> unconditional wake_up_process() on that handler at resume-time.
>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>>
>>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>>> before enable sdio IRQ.
>>>
>>> Signed-off-by: Jaehoon Chung 
>>> Signed-off-by: Chris Ball 
>>> Signed-off-by: Ulf Hansson 
>>> Signed-off-by: Fu Zhonghui 
>> Thanks! Applied for next and added a stable tag for v3.16+.
>>
>> Kind regards
>> Uffe
>>
>>> ---
>>>  drivers/mmc/core/sdio.c |   12 ++--
>>>  drivers/mmc/core/sdio_irq.c |4 ++--
>>>  2 files changed, 12 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>>> index e636d9e..3fc40a7 100644
>>> --- a/drivers/mmc/core/sdio.c
>>> +++ b/drivers/mmc/core/sdio.c
>>> @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
>>> }
>>> }
>>>
>>> -   if (!err && host->sdio_irqs)
>>> -   wake_up_process(host->sdio_irq_thread);
>>> +   if (!err && host->sdio_irqs) {
>>> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>>> +   wake_up_process(host->sdio_irq_thread);
>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>> +   mmc_host_clk_hold(host);
>>> +   host->ops->enable_sdio_irq(host, 1);
>>> +   mmc_host_clk_release(host);
>>> +   }
>>> +   }
>>> +
>>> mmc_release_host(host);
>>>
>>> host->pm_flags &= ~MMC_PM_KEEP_POWER;
>>> diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
>>> index 5cc13c8..696eca4 100644
>>> --- a/drivers/mmc/core/sdio_irq.c
>>> +++ b/drivers/mmc/core/sdio_irq.c
>>> @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
>>> host->sdio_irqs--;
>>> return err;
>>> }
>>> -   } else {
>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>> mmc_host_clk_hold(host);
>>> host->ops->enable_sdio_irq(host, 1);
>>> mmc_host_clk_release(host);
>>> @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
>>> if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>>>         atomic_set(>sdio_irq_thread_abort, 1);
>>> kthread_stop(host->sdio_irq_thread);
>>> -   } else {
>>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>>> mmc_host_clk_hold(host);
>>> host->ops->enable_sdio_irq(host, 0);
>>> mmc_host_clk_release(host);
>>> -- 1.7.1
>>>
>>> On 2014/8/12 18:23, Ulf Hansson wrote:
>>>> On 11 August 2014 07:49, Fu, Zhonghui  wrote:
>>>>> From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
>>>>> From: Fu Zhonghui 
>>>>> Date: Tue, 5 Aug 2014 12:44:38 +0800
>>>>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>>>>> sdio thread
>>>>>
>>>>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>>>>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disa

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-09-02 Thread Fu, Zhonghui

Hi,Uffe

Could you please tell me into which git repository this patch is merged now?



Thanks,
Zhonghui 



On 2014/8/26 0:10, Fu, Zhonghui wrote:

 Many thanks for your helps.



 Thanks,
 Zhonghui


 On 2014/8/18 20:07, Ulf Hansson wrote:
 On 18 August 2014 05:04, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Mon, 18 Aug 2014 10:48:14 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Ulf Hansson ulf.hans...@linaro.org
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 Thanks! Applied for next and added a stable tag for v3.16+.

 Kind regards
 Uffe

 ---
  drivers/mmc/core/sdio.c |   12 ++--
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 12 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..3fc40a7 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1);
 +   mmc_host_clk_release(host);
 +   }
 +   }
 +
 mmc_release_host(host);

 host-pm_flags = ~MMC_PM_KEEP_POWER;
 diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
 index 5cc13c8..696eca4 100644
 --- a/drivers/mmc/core/sdio_irq.c
 +++ b/drivers/mmc/core/sdio_irq.c
 @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
 host-sdio_irqs--;
 return err;
 }
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 1);
 mmc_host_clk_release(host);
 @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
 if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 atomic_set(host-sdio_irq_thread_abort, 1);
 kthread_stop(host-sdio_irq_thread);
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 0);
 mmc_host_clk_release(host);
 -- 1.7.1

 On 2014/8/12 18:23, Ulf Hansson wrote:
 On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-09-02 Thread Jaehoon Chung
Hi,

On 09/03/2014 11:10 AM, Fu, Zhonghui wrote:
 
 Hi,Uffe
 
 Could you please tell me into which git repository this patch is merged now?

I knew it was merged into Ulf's git repository.
You can refer to below git.

url = http://git.linaro.org/git/people/ulf.hansson/mmc.git


Best Regards,
Jaehoon Chung
 
 
 
 Thanks,
 Zhonghui 
 
 
 
 On 2014/8/26 0:10, Fu, Zhonghui wrote:

 Many thanks for your helps.



 Thanks,
 Zhonghui


 On 2014/8/18 20:07, Ulf Hansson wrote:
 On 18 August 2014 05:04, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Mon, 18 Aug 2014 10:48:14 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Ulf Hansson ulf.hans...@linaro.org
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 Thanks! Applied for next and added a stable tag for v3.16+.

 Kind regards
 Uffe

 ---
  drivers/mmc/core/sdio.c |   12 ++--
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 12 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..3fc40a7 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1);
 +   mmc_host_clk_release(host);
 +   }
 +   }
 +
 mmc_release_host(host);

 host-pm_flags = ~MMC_PM_KEEP_POWER;
 diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
 index 5cc13c8..696eca4 100644
 --- a/drivers/mmc/core/sdio_irq.c
 +++ b/drivers/mmc/core/sdio_irq.c
 @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
 host-sdio_irqs--;
 return err;
 }
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 1);
 mmc_host_clk_release(host);
 @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
 if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 atomic_set(host-sdio_irq_thread_abort, 1);
 kthread_stop(host-sdio_irq_thread);
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 0);
 mmc_host_clk_release(host);
 -- 1.7.1

 On 2014/8/12 18:23, Ulf Hansson wrote:
 On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-25 Thread Fu, Zhonghui


Many thanks for your helps.



Thanks,
Zhonghui


On 2014/8/18 20:07, Ulf Hansson wrote:
> On 18 August 2014 05:04, Fu, Zhonghui  wrote:
>> From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
>> From: Fu Zhonghui 
>> Date: Mon, 18 Aug 2014 10:48:14 +0800
>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>> sdio thread
>>
>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>> the use of our own custom threaded IRQ handler, but left in an
>> unconditional wake_up_process() on that handler at resume-time.
>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>
>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>> before enable sdio IRQ.
>>
>> Signed-off-by: Jaehoon Chung 
>> Signed-off-by: Chris Ball 
>> Signed-off-by: Ulf Hansson 
>> Signed-off-by: Fu Zhonghui 
> Thanks! Applied for next and added a stable tag for v3.16+.
>
> Kind regards
> Uffe
>
>> ---
>>  drivers/mmc/core/sdio.c |   12 ++--
>>  drivers/mmc/core/sdio_irq.c |4 ++--
>>  2 files changed, 12 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>> index e636d9e..3fc40a7 100644
>> --- a/drivers/mmc/core/sdio.c
>> +++ b/drivers/mmc/core/sdio.c
>> @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
>> }
>> }
>>
>> -   if (!err && host->sdio_irqs)
>> -   wake_up_process(host->sdio_irq_thread);
>> +   if (!err && host->sdio_irqs) {
>> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>> +   wake_up_process(host->sdio_irq_thread);
>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>> +   mmc_host_clk_hold(host);
>> +   host->ops->enable_sdio_irq(host, 1);
>> +   mmc_host_clk_release(host);
>> +   }
>> +   }
>> +
>> mmc_release_host(host);
>>
>> host->pm_flags &= ~MMC_PM_KEEP_POWER;
>> diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
>> index 5cc13c8..696eca4 100644
>> --- a/drivers/mmc/core/sdio_irq.c
>> +++ b/drivers/mmc/core/sdio_irq.c
>> @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
>> host->sdio_irqs--;
>> return err;
>> }
>> -   } else {
>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>> mmc_host_clk_hold(host);
>> host->ops->enable_sdio_irq(host, 1);
>> mmc_host_clk_release(host);
>> @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
>> if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>> atomic_set(>sdio_irq_thread_abort, 1);
>> kthread_stop(host->sdio_irq_thread);
>> -   } else {
>> +       } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>> mmc_host_clk_hold(host);
>> host->ops->enable_sdio_irq(host, 0);
>> mmc_host_clk_release(host);
>> -- 1.7.1
>>
>> On 2014/8/12 18:23, Ulf Hansson wrote:
>>> On 11 August 2014 07:49, Fu, Zhonghui  wrote:
>>>> From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
>>>> From: Fu Zhonghui 
>>>> Date: Tue, 5 Aug 2014 12:44:38 +0800
>>>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>>>> sdio thread
>>>>
>>>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>>>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>>>> the use of our own custom threaded IRQ handler, but left in an
>>>> unconditional wake_up_process() on that handler at resume-time.
>>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>>>
>>>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>>>> before enable sdio IRQ.
>>>>
>>>> Signed-off-by: Jaehoon Chung 
>>>> Signed-off-by: Chris Ball 
>>>> Signed-off-by: Fu Zhonghui 
&

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-25 Thread Fu, Zhonghui


Many thanks for your helps.



Thanks,
Zhonghui


On 2014/8/18 20:07, Ulf Hansson wrote:
 On 18 August 2014 05:04, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Mon, 18 Aug 2014 10:48:14 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Ulf Hansson ulf.hans...@linaro.org
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 Thanks! Applied for next and added a stable tag for v3.16+.

 Kind regards
 Uffe

 ---
  drivers/mmc/core/sdio.c |   12 ++--
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 12 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..3fc40a7 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1);
 +   mmc_host_clk_release(host);
 +   }
 +   }
 +
 mmc_release_host(host);

 host-pm_flags = ~MMC_PM_KEEP_POWER;
 diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
 index 5cc13c8..696eca4 100644
 --- a/drivers/mmc/core/sdio_irq.c
 +++ b/drivers/mmc/core/sdio_irq.c
 @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
 host-sdio_irqs--;
 return err;
 }
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 1);
 mmc_host_clk_release(host);
 @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
 if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 atomic_set(host-sdio_irq_thread_abort, 1);
 kthread_stop(host-sdio_irq_thread);
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 0);
 mmc_host_clk_release(host);
 -- 1.7.1

 On 2014/8/12 18:23, Ulf Hansson wrote:
 On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_release_host(host);
 Why mmc_release_host() and the corresponding

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-18 Thread Ulf Hansson
On 18 August 2014 05:04, Fu, Zhonghui  wrote:
> From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
> From: Fu Zhonghui 
> Date: Mon, 18 Aug 2014 10:48:14 +0800
> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
> thread
>
> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
> the use of our own custom threaded IRQ handler, but left in an
> unconditional wake_up_process() on that handler at resume-time.
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>
> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
> before enable sdio IRQ.
>
> Signed-off-by: Jaehoon Chung 
> Signed-off-by: Chris Ball 
> Signed-off-by: Ulf Hansson 
> Signed-off-by: Fu Zhonghui 

Thanks! Applied for next and added a stable tag for v3.16+.

Kind regards
Uffe

> ---
>  drivers/mmc/core/sdio.c |   12 ++--
>  drivers/mmc/core/sdio_irq.c |4 ++--
>  2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
> index e636d9e..3fc40a7 100644
> --- a/drivers/mmc/core/sdio.c
> +++ b/drivers/mmc/core/sdio.c
> @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
> }
> }
>
> -   if (!err && host->sdio_irqs)
> -   wake_up_process(host->sdio_irq_thread);
> +   if (!err && host->sdio_irqs) {
> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
> +   wake_up_process(host->sdio_irq_thread);
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> +   mmc_host_clk_hold(host);
> +   host->ops->enable_sdio_irq(host, 1);
> +   mmc_host_clk_release(host);
> +   }
> +   }
> +
> mmc_release_host(host);
>
> host->pm_flags &= ~MMC_PM_KEEP_POWER;
> diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
> index 5cc13c8..696eca4 100644
> --- a/drivers/mmc/core/sdio_irq.c
> +++ b/drivers/mmc/core/sdio_irq.c
> @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
> host->sdio_irqs--;
> return err;
> }
> -   } else {
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> mmc_host_clk_hold(host);
> host->ops->enable_sdio_irq(host, 1);
> mmc_host_clk_release(host);
> @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
> if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
> atomic_set(>sdio_irq_thread_abort, 1);
> kthread_stop(host->sdio_irq_thread);
> -   } else {
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> mmc_host_clk_hold(host);
> host->ops->enable_sdio_irq(host, 0);
>         mmc_host_clk_release(host);
> -- 1.7.1
>
> On 2014/8/12 18:23, Ulf Hansson wrote:
>> On 11 August 2014 07:49, Fu, Zhonghui  wrote:
>>> From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
>>> From: Fu Zhonghui 
>>> Date: Tue, 5 Aug 2014 12:44:38 +0800
>>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>>> sdio thread
>>>
>>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>>> the use of our own custom threaded IRQ handler, but left in an
>>> unconditional wake_up_process() on that handler at resume-time.
>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>>
>>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>>> before enable sdio IRQ.
>>>
>>> Signed-off-by: Jaehoon Chung 
>>> Signed-off-by: Chris Ball 
>>> Signed-off-by: Fu Zhonghui 
>>> ---
>>>  drivers/mmc/core/sdio.c |   14 --
>>>  drivers/mmc/core/sdio_irq.c |4 ++--
>>>  2 files changed, 14 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>>> index e636d9e..e04a540 100644
>>> --- a/drivers/mmc/core/sdio.c
>>> +++ b/drivers/mmc/core/sdio.c
>>> @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *hos

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-18 Thread Ulf Hansson
On 18 August 2014 05:04, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Mon, 18 Aug 2014 10:48:14 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
 thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Ulf Hansson ulf.hans...@linaro.org
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com

Thanks! Applied for next and added a stable tag for v3.16+.

Kind regards
Uffe

 ---
  drivers/mmc/core/sdio.c |   12 ++--
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 12 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..3fc40a7 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1);
 +   mmc_host_clk_release(host);
 +   }
 +   }
 +
 mmc_release_host(host);

 host-pm_flags = ~MMC_PM_KEEP_POWER;
 diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
 index 5cc13c8..696eca4 100644
 --- a/drivers/mmc/core/sdio_irq.c
 +++ b/drivers/mmc/core/sdio_irq.c
 @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
 host-sdio_irqs--;
 return err;
 }
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 1);
 mmc_host_clk_release(host);
 @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
 if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 atomic_set(host-sdio_irq_thread_abort, 1);
 kthread_stop(host-sdio_irq_thread);
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 0);
 mmc_host_clk_release(host);
 -- 1.7.1

 On 2014/8/12 18:23, Ulf Hansson wrote:
 On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_release_host(host);
 Why mmc_release_host() and the corresponding mmc_claim_host() below?
 Those shouldn't be needed I think.

 You are right. These two functions

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-17 Thread Fu, Zhonghui
>From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
From: Fu Zhonghui 
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
thread

781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
the use of our own custom threaded IRQ handler, but left in an
unconditional wake_up_process() on that handler at resume-time.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

In addition, the check for MMC_CAP_SDIO_IRQ capability is added
before enable sdio IRQ.

Signed-off-by: Jaehoon Chung 
Signed-off-by: Chris Ball 
Signed-off-by: Ulf Hansson 
Signed-off-by: Fu Zhonghui 
---
 drivers/mmc/core/sdio.c |   12 ++--
 drivers/mmc/core/sdio_irq.c |4 ++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index e636d9e..3fc40a7 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
}
}
 
-   if (!err && host->sdio_irqs)
-   wake_up_process(host->sdio_irq_thread);
+   if (!err && host->sdio_irqs) {
+   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
+   wake_up_process(host->sdio_irq_thread);
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
+   mmc_host_clk_hold(host);
+   host->ops->enable_sdio_irq(host, 1);
+   mmc_host_clk_release(host);
+   }
+   }
+
mmc_release_host(host);
 
host->pm_flags &= ~MMC_PM_KEEP_POWER;
diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
index 5cc13c8..696eca4 100644
--- a/drivers/mmc/core/sdio_irq.c
+++ b/drivers/mmc/core/sdio_irq.c
@@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
host->sdio_irqs--;
return err;
}
-   } else {
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host->ops->enable_sdio_irq(host, 1);
mmc_host_clk_release(host);
@@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
atomic_set(>sdio_irq_thread_abort, 1);
kthread_stop(host->sdio_irq_thread);
-   } else {
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host->ops->enable_sdio_irq(host, 0);
mmc_host_clk_release(host);
-- 1.7.1

On 2014/8/12 18:23, Ulf Hansson wrote:
> On 11 August 2014 07:49, Fu, Zhonghui  wrote:
>> From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
>> From: Fu Zhonghui 
>> Date: Tue, 5 Aug 2014 12:44:38 +0800
>> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
>> sdio thread
>>
>> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
>> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
>> the use of our own custom threaded IRQ handler, but left in an
>> unconditional wake_up_process() on that handler at resume-time.
>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>>
>> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
>> before enable sdio IRQ.
>>
>> Signed-off-by: Jaehoon Chung 
>> Signed-off-by: Chris Ball 
>> Signed-off-by: Fu Zhonghui 
>> ---
>>  drivers/mmc/core/sdio.c |   14 --
>>  drivers/mmc/core/sdio_irq.c |4 ++--
>>  2 files changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
>> index e636d9e..e04a540 100644
>> --- a/drivers/mmc/core/sdio.c
>> +++ b/drivers/mmc/core/sdio.c
>> @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
>> }
>> }
>>
>> -   if (!err && host->sdio_irqs)
>> -   wake_up_process(host->sdio_irq_thread);
>> +   if (!err && host->sdio_irqs) {
>> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
>> +   wake_up_process(host->sdio_irq_thread);
>> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
>> +   mmc_release_host(host);
> Why mmc_release_host() 

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-17 Thread Fu, Zhonghui
From 21266249bbbaf9407c1e88cd5950e06ac88aeebf Mon Sep 17 00:00:00 2001
From: Fu Zhonghui zhonghui...@linux.intel.com
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
thread

781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
the use of our own custom threaded IRQ handler, but left in an
unconditional wake_up_process() on that handler at resume-time.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

In addition, the check for MMC_CAP_SDIO_IRQ capability is added
before enable sdio IRQ.

Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
Signed-off-by: Chris Ball ch...@printf.net
Signed-off-by: Ulf Hansson ulf.hans...@linaro.org
Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
---
 drivers/mmc/core/sdio.c |   12 ++--
 drivers/mmc/core/sdio_irq.c |4 ++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index e636d9e..3fc40a7 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -992,8 +992,16 @@ static int mmc_sdio_resume(struct mmc_host *host)
}
}
 
-   if (!err  host-sdio_irqs)
-   wake_up_process(host-sdio_irq_thread);
+   if (!err  host-sdio_irqs) {
+   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
+   wake_up_process(host-sdio_irq_thread);
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
+   mmc_host_clk_hold(host);
+   host-ops-enable_sdio_irq(host, 1);
+   mmc_host_clk_release(host);
+   }
+   }
+
mmc_release_host(host);
 
host-pm_flags = ~MMC_PM_KEEP_POWER;
diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
index 5cc13c8..696eca4 100644
--- a/drivers/mmc/core/sdio_irq.c
+++ b/drivers/mmc/core/sdio_irq.c
@@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
host-sdio_irqs--;
return err;
}
-   } else {
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host-ops-enable_sdio_irq(host, 1);
mmc_host_clk_release(host);
@@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
atomic_set(host-sdio_irq_thread_abort, 1);
kthread_stop(host-sdio_irq_thread);
-   } else {
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host-ops-enable_sdio_irq(host, 0);
mmc_host_clk_release(host);
-- 1.7.1

On 2014/8/12 18:23, Ulf Hansson wrote:
 On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on 
 sdio thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_release_host(host);
 Why mmc_release_host() and the corresponding mmc_claim_host() below?
 Those shouldn't be needed I think.

You are right. These two functions shouldn't be invoked here. I made a new 
patch as above.


Thanks,
Zhonghui


 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1

Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-12 Thread Ulf Hansson
On 11 August 2014 07:49, Fu, Zhonghui  wrote:
> From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
> From: Fu Zhonghui 
> Date: Tue, 5 Aug 2014 12:44:38 +0800
> Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
> thread
>
> 781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
> bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
> the use of our own custom threaded IRQ handler, but left in an
> unconditional wake_up_process() on that handler at resume-time.
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151
>
> In addition, the check for MMC_CAP_SDIO_IRQ capability is added
> before enable sdio IRQ.
>
> Signed-off-by: Jaehoon Chung 
> Signed-off-by: Chris Ball 
> Signed-off-by: Fu Zhonghui 
> ---
>  drivers/mmc/core/sdio.c |   14 --
>  drivers/mmc/core/sdio_irq.c |4 ++--
>  2 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
> index e636d9e..e04a540 100644
> --- a/drivers/mmc/core/sdio.c
> +++ b/drivers/mmc/core/sdio.c
> @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
> }
> }
>
> -   if (!err && host->sdio_irqs)
> -   wake_up_process(host->sdio_irq_thread);
> +   if (!err && host->sdio_irqs) {
> +   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
> +   wake_up_process(host->sdio_irq_thread);
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> +   mmc_release_host(host);

Why mmc_release_host() and the corresponding mmc_claim_host() below?
Those shouldn't be needed I think.


> +   mmc_host_clk_hold(host);
> +   host->ops->enable_sdio_irq(host, 1);
> +   mmc_host_clk_release(host);
> +   mmc_claim_host(host);
> +   }
> +   }
> +
> mmc_release_host(host);
>
> host->pm_flags &= ~MMC_PM_KEEP_POWER;
> diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
> index 5cc13c8..696eca4 100644
> --- a/drivers/mmc/core/sdio_irq.c
> +++ b/drivers/mmc/core/sdio_irq.c
> @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
> host->sdio_irqs--;
> return err;
> }
> -   } else {
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> mmc_host_clk_hold(host);
> host->ops->enable_sdio_irq(host, 1);
> mmc_host_clk_release(host);
> @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
> if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
> atomic_set(>sdio_irq_thread_abort, 1);
> kthread_stop(host->sdio_irq_thread);
> -   } else {
> +   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
> mmc_host_clk_hold(host);
> host->ops->enable_sdio_irq(host, 0);
> mmc_host_clk_release(host);
> -- 1.7.1
>

Thanks for working on this!

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-12 Thread Ulf Hansson
On 11 August 2014 07:49, Fu, Zhonghui zhonghui...@linux.intel.com wrote:
 From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
 From: Fu Zhonghui zhonghui...@linux.intel.com
 Date: Tue, 5 Aug 2014 12:44:38 +0800
 Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
 thread

 781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
 bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
 the use of our own custom threaded IRQ handler, but left in an
 unconditional wake_up_process() on that handler at resume-time.
 Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

 In addition, the check for MMC_CAP_SDIO_IRQ capability is added
 before enable sdio IRQ.

 Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
 Signed-off-by: Chris Ball ch...@printf.net
 Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
 ---
  drivers/mmc/core/sdio.c |   14 --
  drivers/mmc/core/sdio_irq.c |4 ++--
  2 files changed, 14 insertions(+), 4 deletions(-)

 diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
 index e636d9e..e04a540 100644
 --- a/drivers/mmc/core/sdio.c
 +++ b/drivers/mmc/core/sdio.c
 @@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
 }
 }

 -   if (!err  host-sdio_irqs)
 -   wake_up_process(host-sdio_irq_thread);
 +   if (!err  host-sdio_irqs) {
 +   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 +   wake_up_process(host-sdio_irq_thread);
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 +   mmc_release_host(host);

Why mmc_release_host() and the corresponding mmc_claim_host() below?
Those shouldn't be needed I think.


 +   mmc_host_clk_hold(host);
 +   host-ops-enable_sdio_irq(host, 1);
 +   mmc_host_clk_release(host);
 +   mmc_claim_host(host);
 +   }
 +   }
 +
 mmc_release_host(host);

 host-pm_flags = ~MMC_PM_KEEP_POWER;
 diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
 index 5cc13c8..696eca4 100644
 --- a/drivers/mmc/core/sdio_irq.c
 +++ b/drivers/mmc/core/sdio_irq.c
 @@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
 host-sdio_irqs--;
 return err;
 }
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 1);
 mmc_host_clk_release(host);
 @@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
 if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
 atomic_set(host-sdio_irq_thread_abort, 1);
 kthread_stop(host-sdio_irq_thread);
 -   } else {
 +   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
 mmc_host_clk_hold(host);
 host-ops-enable_sdio_irq(host, 0);
 mmc_host_clk_release(host);
 -- 1.7.1


Thanks for working on this!

Kind regards
Uffe
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-10 Thread Fu, Zhonghui
>From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
From: Fu Zhonghui 
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
thread

781e989cf59 ("mmc: sdhci: convert to new SDIO IRQ handling") and
bf3b5ec66bd ("mmc: sdio_irq: rework sdio irq handling") disabled
the use of our own custom threaded IRQ handler, but left in an
unconditional wake_up_process() on that handler at resume-time.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

In addition, the check for MMC_CAP_SDIO_IRQ capability is added
before enable sdio IRQ.

Signed-off-by: Jaehoon Chung 
Signed-off-by: Chris Ball 
Signed-off-by: Fu Zhonghui 
---
 drivers/mmc/core/sdio.c |   14 --
 drivers/mmc/core/sdio_irq.c |4 ++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index e636d9e..e04a540 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
}
}
 
-   if (!err && host->sdio_irqs)
-   wake_up_process(host->sdio_irq_thread);
+   if (!err && host->sdio_irqs) {
+   if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
+   wake_up_process(host->sdio_irq_thread);
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
+   mmc_release_host(host);
+   mmc_host_clk_hold(host);
+   host->ops->enable_sdio_irq(host, 1);
+   mmc_host_clk_release(host);
+   mmc_claim_host(host);
+   }
+   }
+
mmc_release_host(host);
 
host->pm_flags &= ~MMC_PM_KEEP_POWER;
diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
index 5cc13c8..696eca4 100644
--- a/drivers/mmc/core/sdio_irq.c
+++ b/drivers/mmc/core/sdio_irq.c
@@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
host->sdio_irqs--;
return err;
}
-   } else {
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host->ops->enable_sdio_irq(host, 1);
mmc_host_clk_release(host);
@@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
atomic_set(>sdio_irq_thread_abort, 1);
kthread_stop(host->sdio_irq_thread);
-   } else {
+   } else if (host->caps & MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host->ops->enable_sdio_irq(host, 0);
mmc_host_clk_release(host);
-- 1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread

2014-08-10 Thread Fu, Zhonghui
From 6cee984e1d76ba0a3320430f8cf4318ab65fcf06 Mon Sep 17 00:00:00 2001
From: Fu Zhonghui zhonghui...@linux.intel.com
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditional wake_up_process() on sdio 
thread

781e989cf59 (mmc: sdhci: convert to new SDIO IRQ handling) and
bf3b5ec66bd (mmc: sdio_irq: rework sdio irq handling) disabled
the use of our own custom threaded IRQ handler, but left in an
unconditional wake_up_process() on that handler at resume-time.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151

In addition, the check for MMC_CAP_SDIO_IRQ capability is added
before enable sdio IRQ.

Signed-off-by: Jaehoon Chung jh80.ch...@samsung.com
Signed-off-by: Chris Ball ch...@printf.net
Signed-off-by: Fu Zhonghui zhonghui...@linux.intel.com
---
 drivers/mmc/core/sdio.c |   14 --
 drivers/mmc/core/sdio_irq.c |4 ++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index e636d9e..e04a540 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host)
}
}
 
-   if (!err  host-sdio_irqs)
-   wake_up_process(host-sdio_irq_thread);
+   if (!err  host-sdio_irqs) {
+   if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
+   wake_up_process(host-sdio_irq_thread);
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
+   mmc_release_host(host);
+   mmc_host_clk_hold(host);
+   host-ops-enable_sdio_irq(host, 1);
+   mmc_host_clk_release(host);
+   mmc_claim_host(host);
+   }
+   }
+
mmc_release_host(host);
 
host-pm_flags = ~MMC_PM_KEEP_POWER;
diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c
index 5cc13c8..696eca4 100644
--- a/drivers/mmc/core/sdio_irq.c
+++ b/drivers/mmc/core/sdio_irq.c
@@ -208,7 +208,7 @@ static int sdio_card_irq_get(struct mmc_card *card)
host-sdio_irqs--;
return err;
}
-   } else {
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host-ops-enable_sdio_irq(host, 1);
mmc_host_clk_release(host);
@@ -229,7 +229,7 @@ static int sdio_card_irq_put(struct mmc_card *card)
if (!(host-caps2  MMC_CAP2_SDIO_IRQ_NOTHREAD)) {
atomic_set(host-sdio_irq_thread_abort, 1);
kthread_stop(host-sdio_irq_thread);
-   } else {
+   } else if (host-caps  MMC_CAP_SDIO_IRQ) {
mmc_host_clk_hold(host);
host-ops-enable_sdio_irq(host, 0);
mmc_host_clk_release(host);
-- 1.7.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/