mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread
PATCH 1/1 mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread
Quoted 1 line
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
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.
In addition, the check for MMC_CAP_SDIO_IRQ capability is added before enable sdio IRQ.
--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)
drivers/mmc/core/sdio.c +12 -2
@@ -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 ;
drivers/mmc/core/sdio_irq.c +2 -2
@@ -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
Quoted 27 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host) · line 999
Quoted 10 lines
drivers/mmc/core/sdio.c +5
-2@@ -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.
Quoted 25 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);
drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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
Quoted 1 line
From
21266249bbbaf9407c1e88cd5950e06ac88aeebfMon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
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.
In addition, the check for MMC_CAP_SDIO_IRQ capability is added before enable sdio IRQ.
--- drivers/mmc/core/sdio.c | 12 ++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-)
drivers/mmc/core/sdio.c +10 -2
@@ -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 ;
drivers/mmc/core/sdio_irq.c +2 -2
@@ -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
Quoted 31 lines · Ulf Hansson
Quoted 30 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host) } }
Quoted 9 lines
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host) · line 999
Quoted 7 lines
drivers/mmc/core/sdio.c +5
-2-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 correspondingmmc_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
Quoted 45 lines
Quoted 27 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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.1Thanks 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Ulf Hansson
AppliedQuoted 11 lines · Zhonghui
From
21266249bbbaf9407c1e88cd5950e06ac88aeebfMon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.
Quoted 7 lines
In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Ulf Hansson <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>
Thanks! Applied for next and added a stable tag for v3.16+.
Kind regards
Uffe
Quoted 145 lines
--- drivers/mmc/core/sdio.c | 12 ++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +10
-2@@ -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 ;drivers/mmc/core/sdio_irq.c +2
-3@@ -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.1Quoted 31 lines · Ulf Hansson
Quoted 30 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host) } }Quoted 9 lines
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host)
Quoted 7 lines
drivers/mmc/core/sdio.c +5
-2-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 correspondingmmc_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,
ZhonghuiQuoted 45 lines
Quoted 27 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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.1Thanks 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Many thanks for your helps.
Thanks,
Zhonghui
Quoted 171 lines · Ulf Hansson
Quoted 11 lines · Zhonghui
From
21266249bbbaf9407c1e88cd5950e06ac88aeebfMon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.Quoted 7 lines
In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Ulf Hansson <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>Thanks! Applied for next and added a stable tag for v3.16+.
Kind regards
UffeQuoted 93 lines
--- drivers/mmc/core/sdio.c | 12 ++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +10
-2@@ -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 ;drivers/mmc/core/sdio_irq.c +2
-3@@ -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.1Quoted 31 lines · Ulf Hansson
Quoted 30 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host) } }Quoted 9 lines
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host)
Quoted 7 lines
drivers/mmc/core/sdio.c +5
-2-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 correspondingmmc_claim_host()below? Those shouldn't be needed I think.Quoted 49 lines
You are right. These two functions shouldn't be invoked here. I made a new patch as above.
Thanks,
ZhonghuiQuoted 44 lines
Quoted 26 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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.1Thanks 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Hi,Uffe
Could you please tell me into which git repository this patch is merged now?
Thanks,
Zhonghui
Quoted 180 lines · Zhonghui
Many thanks for your helps.
Thanks,
ZhonghuiQuoted 170 lines · Ulf Hansson
Quoted 11 lines · Zhonghui
From
21266249bbbaf9407c1e88cd5950e06ac88aeebfMon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.Quoted 7 lines
In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Ulf Hansson <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>Thanks! Applied for next and added a stable tag for v3.16+.
Kind regards
UffeQuoted 93 lines
--- drivers/mmc/core/sdio.c | 12 ++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +10
-2@@ -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 ;drivers/mmc/core/sdio_irq.c +2
-3@@ -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.1Quoted 31 lines · Ulf Hansson
Quoted 30 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host) } }Quoted 9 lines
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host)
Quoted 7 lines
drivers/mmc/core/sdio.c +5
-2-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 correspondingmmc_claim_host()below? Those shouldn't be needed I think.Quoted 48 lines
You are right. These two functions shouldn't be invoked here. I made a new patch as above.
Thanks,
ZhonghuiQuoted 43 lines
Quoted 25 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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.1Thanks 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Hi,
Quoted 4 lines · Zhonghui
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
Quoted 191 lines
Thanks,
ZhonghuiQuoted 180 lines · Zhonghui
Many thanks for your helps.
Thanks,
ZhonghuiQuoted 170 lines · Ulf Hansson
Quoted 11 lines · Zhonghui
From
21266249bbbaf9407c1e88cd5950e06ac88aeebfMon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Mon, 18 Aug 2014 10:48:14 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.Quoted 7 lines
In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Ulf Hansson <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>Thanks! Applied for next and added a stable tag for v3.16+.
Kind regards
UffeQuoted 93 lines
--- drivers/mmc/core/sdio.c | 12 ++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +10
-2@@ -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 ;drivers/mmc/core/sdio_irq.c +2
-3@@ -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.1Quoted 31 lines · Ulf Hansson
Quoted 30 lines · Zhonghui
From
6cee984e1d76ba0a3320430f8cf4318ab65fcf06Mon Sep 17 00:00:00 2001
From: Fu Zhonghui <[email protected]>
Date: Tue, 5 Aug 2014 12:44:38 +0800
Subject: [PATCH] mmc: core: sdio: Fix unconditionalwake_up_process()on sdio thread
781e989cf59("mmc: sdhci: convert to new SDIO IRQ handling") andbf3b5ec66bd("mmc:sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditionalwake_up_process()on that handler at resume-time.In addition, the check for
MMC_CAP_SDIO_IRQcapability is added before enable sdio IRQ.Signed-off-by Jaehoon Chung <[email protected]>Signed-off-by Chris Ball <[email protected]>Signed-off-by Fu Zhonghui <[email protected]>--- drivers/mmc/core/sdio.c | 14 ++++++++++++-- drivers/mmc/core/sdio_irq.c | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-)drivers/mmc/core/sdio.c +0
-0@@ -992,8 +992,18 @@ static int mmc_sdio_resume(struct mmc_host *host) } }Quoted 9 lines
drivers/mmc/core/sdio.c static int mmc_sdio_resume(struct mmc_host *host)
Quoted 7 lines
drivers/mmc/core/sdio.c +5
-2-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 correspondingmmc_claim_host()below? Those shouldn't be needed I think.Quoted 48 lines
You are right. These two functions shouldn't be invoked here. I made a new patch as above.
Thanks,
ZhonghuiQuoted 43 lines
Quoted 25 lines
drivers/mmc/core/sdio.c +7
-0+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 ;drivers/mmc/core/sdio_irq.c +1
-1@@ -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);drivers/mmc/core/sdio_irq.c static int sdio_card_irq_put(struct mmc_card *card)
Quoted 9 lines
drivers/mmc/core/sdio_irq.c +1
-2@@ -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.1Thanks 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/