<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/mmc, branch v3.2.30</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>mmc: card: Skip secure erase on MoviNAND; causes unrecoverable corruption.</title>
<updated>2012-09-19T14:04:40+00:00</updated>
<author>
<name>Ian Chen</name>
<email>ian.cy.chen@samsung.com</email>
</author>
<published>2012-08-29T06:05:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3b75588b26cc22a16ff812e38ba7720b3e2d9b38'/>
<id>3b75588b26cc22a16ff812e38ba7720b3e2d9b38</id>
<content type='text'>
commit 3550ccdb9d8d350e526b809bf3dd92b550a74fe1 upstream.

For several MoviNAND eMMC parts, there are known issues with secure
erase and secure trim.  For these specific MoviNAND devices, we skip
these operations.

Specifically, there is a bug in the eMMC firmware that causes
unrecoverable corruption when the MMC is erased with MMC_CAP_ERASE
enabled.

References:

http://forum.xda-developers.com/showthread.php?t=1644364
https://plus.google.com/111398485184813224730/posts/21pTYfTsCkB#111398485184813224730/posts/21pTYfTsCkB

Signed-off-by: Ian Chen &lt;ian.cy.chen@samsung.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 3550ccdb9d8d350e526b809bf3dd92b550a74fe1 upstream.

For several MoviNAND eMMC parts, there are known issues with secure
erase and secure trim.  For these specific MoviNAND devices, we skip
these operations.

Specifically, there is a bug in the eMMC firmware that causes
unrecoverable corruption when the MMC is erased with MMC_CAP_ERASE
enabled.

References:

http://forum.xda-developers.com/showthread.php?t=1644364
https://plus.google.com/111398485184813224730/posts/21pTYfTsCkB#111398485184813224730/posts/21pTYfTsCkB

Signed-off-by: Ian Chen &lt;ian.cy.chen@samsung.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-esdhc: break out early if clock is 0</title>
<updated>2012-09-19T14:04:39+00:00</updated>
<author>
<name>Shawn Guo</name>
<email>shawn.guo@linaro.org</email>
</author>
<published>2012-08-22T15:10:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a0d9ef18e6578ebce77372896fa8fb1ba19e1612'/>
<id>a0d9ef18e6578ebce77372896fa8fb1ba19e1612</id>
<content type='text'>
commit 74f330bceaa7b88d06062e1cac3d519a3dfc041e upstream.

Since commit 30832ab56 ("mmc: sdhci: Always pass clock request value
zero to set_clock host op") was merged, esdhc_set_clock starts hitting
"if (clock == 0)" where ESDHC_SYSTEM_CONTROL has been operated.  This
causes SDHCI card-detection function being broken.  Fix the regression
by moving "if (clock == 0)" above ESDHC_SYSTEM_CONTROL operation.

Signed-off-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 74f330bceaa7b88d06062e1cac3d519a3dfc041e upstream.

Since commit 30832ab56 ("mmc: sdhci: Always pass clock request value
zero to set_clock host op") was merged, esdhc_set_clock starts hitting
"if (clock == 0)" where ESDHC_SYSTEM_CONTROL has been operated.  This
causes SDHCI card-detection function being broken.  Fix the regression
by moving "if (clock == 0)" above ESDHC_SYSTEM_CONTROL operation.

Signed-off-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: mxs-mmc: fix deadlock caused by recursion loop</title>
<updated>2012-09-19T14:04:39+00:00</updated>
<author>
<name>Lauri Hintsala</name>
<email>lauri.hintsala@bluegiga.com</email>
</author>
<published>2012-07-17T14:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3a0ae8e18c188a90c8a54fd26d18d6da5a084892'/>
<id>3a0ae8e18c188a90c8a54fd26d18d6da5a084892</id>
<content type='text'>
commit fc108d24d3a6da63576a460e122fa1df0cbdea20 upstream.

Release the lock before mmc_signal_sdio_irq is called by
mxs_mmc_enable_sdio_irq.

Backtrace:
[   65.470000] =============================================
[   65.470000] [ INFO: possible recursive locking detected ]
[   65.470000] 3.5.0-rc5 #2 Not tainted
[   65.470000] ---------------------------------------------
[   65.470000] ksdioirqd/mmc0/73 is trying to acquire lock:
[   65.470000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] but task is already holding lock:
[   65.470000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] other info that might help us debug this:
[   65.470000]  Possible unsafe locking scenario:
[   65.470000]
[   65.470000]        CPU0
[   65.470000]        ----
[   65.470000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   65.470000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   65.470000]
[   65.470000]  *** DEADLOCK ***
[   65.470000]
[   65.470000]  May be due to missing lock nesting notation
[   65.470000]
[   65.470000] 1 lock held by ksdioirqd/mmc0/73:
[   65.470000]  #0:  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] stack backtrace:
[   65.470000] [&lt;c0014990&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c005ccb8&gt;] (__lock_acquire+0x14f8/0x1b98)
[   65.470000] [&lt;c005ccb8&gt;] (__lock_acquire+0x14f8/0x1b98) from [&lt;c005d3f8&gt;] (lock_acquire+0xa0/0x108)
[   65.470000] [&lt;c005d3f8&gt;] (lock_acquire+0xa0/0x108) from [&lt;c02f671c&gt;] (_raw_spin_lock_irqsave+0x48/0x5c)
[   65.470000] [&lt;c02f671c&gt;] (_raw_spin_lock_irqsave+0x48/0x5c) from [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
[   65.470000] [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
[   65.470000] [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274)
[   65.470000] [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274) from [&lt;c003c324&gt;] (kthread+0x8c/0x98)
[   65.470000] [&lt;c003c324&gt;] (kthread+0x8c/0x98) from [&lt;c00101ac&gt;] (kernel_thread_exit+0x0/0x8)
[   65.470000] BUG: spinlock lockup suspected on CPU#0, ksdioirqd/mmc0/73
[   65.470000]  lock: 0xc3358724, .magic: dead4ead, .owner: ksdioirqd/mmc0/73, .owner_cpu: 0
[   65.470000] [&lt;c0014990&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c01b46b0&gt;] (do_raw_spin_lock+0x100/0x144)
[   65.470000] [&lt;c01b46b0&gt;] (do_raw_spin_lock+0x100/0x144) from [&lt;c02f6724&gt;] (_raw_spin_lock_irqsave+0x50/0x5c)
[   65.470000] [&lt;c02f6724&gt;] (_raw_spin_lock_irqsave+0x50/0x5c) from [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
[   65.470000] [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
[   65.470000] [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274)
[   65.470000] [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274) from [&lt;c003c324&gt;] (kthread+0x8c/0x98)
[   65.470000] [&lt;c003c324&gt;] (kthread+0x8c/0x98) from [&lt;c00101ac&gt;] (kernel_thread_exit+0x0/0x8)

Reported-by: Attila Kinali &lt;attila@kinali.ch&gt;
Signed-off-by: Lauri Hintsala &lt;lauri.hintsala@bluegiga.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2:
 - Adjust context
 - HW_SSP_STATUS is a simple rather than function-like macro]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit fc108d24d3a6da63576a460e122fa1df0cbdea20 upstream.

Release the lock before mmc_signal_sdio_irq is called by
mxs_mmc_enable_sdio_irq.

Backtrace:
[   65.470000] =============================================
[   65.470000] [ INFO: possible recursive locking detected ]
[   65.470000] 3.5.0-rc5 #2 Not tainted
[   65.470000] ---------------------------------------------
[   65.470000] ksdioirqd/mmc0/73 is trying to acquire lock:
[   65.470000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] but task is already holding lock:
[   65.470000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] other info that might help us debug this:
[   65.470000]  Possible unsafe locking scenario:
[   65.470000]
[   65.470000]        CPU0
[   65.470000]        ----
[   65.470000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   65.470000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   65.470000]
[   65.470000]  *** DEADLOCK ***
[   65.470000]
[   65.470000]  May be due to missing lock nesting notation
[   65.470000]
[   65.470000] 1 lock held by ksdioirqd/mmc0/73:
[   65.470000]  #0:  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.-...}, at: [&lt;bf054120&gt;] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
[   65.470000]
[   65.470000] stack backtrace:
[   65.470000] [&lt;c0014990&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c005ccb8&gt;] (__lock_acquire+0x14f8/0x1b98)
[   65.470000] [&lt;c005ccb8&gt;] (__lock_acquire+0x14f8/0x1b98) from [&lt;c005d3f8&gt;] (lock_acquire+0xa0/0x108)
[   65.470000] [&lt;c005d3f8&gt;] (lock_acquire+0xa0/0x108) from [&lt;c02f671c&gt;] (_raw_spin_lock_irqsave+0x48/0x5c)
[   65.470000] [&lt;c02f671c&gt;] (_raw_spin_lock_irqsave+0x48/0x5c) from [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
[   65.470000] [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
[   65.470000] [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274)
[   65.470000] [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274) from [&lt;c003c324&gt;] (kthread+0x8c/0x98)
[   65.470000] [&lt;c003c324&gt;] (kthread+0x8c/0x98) from [&lt;c00101ac&gt;] (kernel_thread_exit+0x0/0x8)
[   65.470000] BUG: spinlock lockup suspected on CPU#0, ksdioirqd/mmc0/73
[   65.470000]  lock: 0xc3358724, .magic: dead4ead, .owner: ksdioirqd/mmc0/73, .owner_cpu: 0
[   65.470000] [&lt;c0014990&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c01b46b0&gt;] (do_raw_spin_lock+0x100/0x144)
[   65.470000] [&lt;c01b46b0&gt;] (do_raw_spin_lock+0x100/0x144) from [&lt;c02f6724&gt;] (_raw_spin_lock_irqsave+0x50/0x5c)
[   65.470000] [&lt;c02f6724&gt;] (_raw_spin_lock_irqsave+0x50/0x5c) from [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
[   65.470000] [&lt;bf054120&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
[   65.470000] [&lt;bf0541d0&gt;] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274)
[   65.470000] [&lt;c0219b38&gt;] (sdio_irq_thread+0x1bc/0x274) from [&lt;c003c324&gt;] (kthread+0x8c/0x98)
[   65.470000] [&lt;c003c324&gt;] (kthread+0x8c/0x98) from [&lt;c00101ac&gt;] (kernel_thread_exit+0x0/0x8)

Reported-by: Attila Kinali &lt;attila@kinali.ch&gt;
Signed-off-by: Lauri Hintsala &lt;lauri.hintsala@bluegiga.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2:
 - Adjust context
 - HW_SSP_STATUS is a simple rather than function-like macro]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: mxs-mmc: fix deadlock in SDIO IRQ case</title>
<updated>2012-09-19T14:04:39+00:00</updated>
<author>
<name>Lauri Hintsala</name>
<email>lauri.hintsala@bluegiga.com</email>
</author>
<published>2012-07-17T14:16:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2fa07abbe88fa0452121d13c44c95595b19ed67d'/>
<id>2fa07abbe88fa0452121d13c44c95595b19ed67d</id>
<content type='text'>
commit 1af36b2a993dddfa3d6860ec4879c9e8abc9b976 upstream.

Release the lock before mmc_signal_sdio_irq is called by mxs_mmc_irq_handler.

Backtrace:
[   79.660000] =============================================
[   79.660000] [ INFO: possible recursive locking detected ]
[   79.660000] 3.4.0-00009-g3e96082-dirty #11 Not tainted
[   79.660000] ---------------------------------------------
[   79.660000] swapper/0 is trying to acquire lock:
[   79.660000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026ea3c&gt;] mxs_mmc_enable_sdio_irq+0x18/0xd4
[   79.660000]
[   79.660000] but task is already holding lock:
[   79.660000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026f744&gt;] mxs_mmc_irq_handler+0x1c/0xe8
[   79.660000]
[   79.660000] other info that might help us debug this:
[   79.660000]  Possible unsafe locking scenario:
[   79.660000]
[   79.660000]        CPU0
[   79.660000]        ----
[   79.660000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   79.660000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   79.660000]
[   79.660000]  *** DEADLOCK ***
[   79.660000]
[   79.660000]  May be due to missing lock nesting notation
[   79.660000]
[   79.660000] 1 lock held by swapper/0:
[   79.660000]  #0:  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026f744&gt;] mxs_mmc_irq_handler+0x1c/0xe8
[   79.660000]
[   79.660000] stack backtrace:
[   79.660000] [&lt;c0014bd0&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c005f9c0&gt;] (__lock_acquire+0x1948/0x1d48)
[   79.660000] [&lt;c005f9c0&gt;] (__lock_acquire+0x1948/0x1d48) from [&lt;c005fea0&gt;] (lock_acquire+0xe0/0xf8)
[   79.660000] [&lt;c005fea0&gt;] (lock_acquire+0xe0/0xf8) from [&lt;c03a8460&gt;] (_raw_spin_lock_irqsave+0x44/0x58)
[   79.660000] [&lt;c03a8460&gt;] (_raw_spin_lock_irqsave+0x44/0x58) from [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4)
[   79.660000] [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8)
[   79.660000] [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8) from [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254)
[   79.660000] [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254) from [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c)
[   79.660000] [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c) from [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110)
[   79.660000] [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110) from [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50)
[   79.660000] [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50) from [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84)
[   79.660000] [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84) from [&lt;c000f058&gt;] (__irq_svc+0x38/0x60)
[   79.660000] [&lt;c000f058&gt;] (__irq_svc+0x38/0x60) from [&lt;c0010520&gt;] (default_idle+0x2c/0x40)
[   79.660000] [&lt;c0010520&gt;] (default_idle+0x2c/0x40) from [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc)
[   79.660000] [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc) from [&lt;c04ff858&gt;] (start_kernel+0x244/0x2c8)
[   79.660000] BUG: spinlock lockup on CPU#0, swapper/0
[   79.660000]  lock: c398cb2c, .magic: dead4ead, .owner: swapper/0, .owner_cpu: 0
[   79.660000] [&lt;c0014bd0&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c01ddb1c&gt;] (do_raw_spin_lock+0xf0/0x144)
[   79.660000] [&lt;c01ddb1c&gt;] (do_raw_spin_lock+0xf0/0x144) from [&lt;c03a8468&gt;] (_raw_spin_lock_irqsave+0x4c/0x58)
[   79.660000] [&lt;c03a8468&gt;] (_raw_spin_lock_irqsave+0x4c/0x58) from [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4)
[   79.660000] [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8)
[   79.660000] [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8) from [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254)
[   79.660000] [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254) from [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c)
[   79.660000] [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c) from [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110)
[   79.660000] [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110) from [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50)
[   79.660000] [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50) from [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84)
[   79.660000] [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84) from [&lt;c000f058&gt;] (__irq_svc+0x38/0x60)
[   79.660000] [&lt;c000f058&gt;] (__irq_svc+0x38/0x60) from [&lt;c0010520&gt;] (default_idle+0x2c/0x40)
[   79.660000] [&lt;c0010520&gt;] (default_idle+0x2c/0x40) from [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc)
[   79.660000] [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc) from [&lt;c04ff858&gt;] (start_kernel+0x244/0x2c8)

Signed-off-by: Lauri Hintsala &lt;lauri.hintsala@bluegiga.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1af36b2a993dddfa3d6860ec4879c9e8abc9b976 upstream.

Release the lock before mmc_signal_sdio_irq is called by mxs_mmc_irq_handler.

Backtrace:
[   79.660000] =============================================
[   79.660000] [ INFO: possible recursive locking detected ]
[   79.660000] 3.4.0-00009-g3e96082-dirty #11 Not tainted
[   79.660000] ---------------------------------------------
[   79.660000] swapper/0 is trying to acquire lock:
[   79.660000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026ea3c&gt;] mxs_mmc_enable_sdio_irq+0x18/0xd4
[   79.660000]
[   79.660000] but task is already holding lock:
[   79.660000]  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026f744&gt;] mxs_mmc_irq_handler+0x1c/0xe8
[   79.660000]
[   79.660000] other info that might help us debug this:
[   79.660000]  Possible unsafe locking scenario:
[   79.660000]
[   79.660000]        CPU0
[   79.660000]        ----
[   79.660000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   79.660000]   lock(&amp;(&amp;host-&gt;lock)-&gt;rlock#2);
[   79.660000]
[   79.660000]  *** DEADLOCK ***
[   79.660000]
[   79.660000]  May be due to missing lock nesting notation
[   79.660000]
[   79.660000] 1 lock held by swapper/0:
[   79.660000]  #0:  (&amp;(&amp;host-&gt;lock)-&gt;rlock#2){-.....}, at: [&lt;c026f744&gt;] mxs_mmc_irq_handler+0x1c/0xe8
[   79.660000]
[   79.660000] stack backtrace:
[   79.660000] [&lt;c0014bd0&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c005f9c0&gt;] (__lock_acquire+0x1948/0x1d48)
[   79.660000] [&lt;c005f9c0&gt;] (__lock_acquire+0x1948/0x1d48) from [&lt;c005fea0&gt;] (lock_acquire+0xe0/0xf8)
[   79.660000] [&lt;c005fea0&gt;] (lock_acquire+0xe0/0xf8) from [&lt;c03a8460&gt;] (_raw_spin_lock_irqsave+0x44/0x58)
[   79.660000] [&lt;c03a8460&gt;] (_raw_spin_lock_irqsave+0x44/0x58) from [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4)
[   79.660000] [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8)
[   79.660000] [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8) from [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254)
[   79.660000] [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254) from [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c)
[   79.660000] [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c) from [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110)
[   79.660000] [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110) from [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50)
[   79.660000] [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50) from [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84)
[   79.660000] [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84) from [&lt;c000f058&gt;] (__irq_svc+0x38/0x60)
[   79.660000] [&lt;c000f058&gt;] (__irq_svc+0x38/0x60) from [&lt;c0010520&gt;] (default_idle+0x2c/0x40)
[   79.660000] [&lt;c0010520&gt;] (default_idle+0x2c/0x40) from [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc)
[   79.660000] [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc) from [&lt;c04ff858&gt;] (start_kernel+0x244/0x2c8)
[   79.660000] BUG: spinlock lockup on CPU#0, swapper/0
[   79.660000]  lock: c398cb2c, .magic: dead4ead, .owner: swapper/0, .owner_cpu: 0
[   79.660000] [&lt;c0014bd0&gt;] (unwind_backtrace+0x0/0xf4) from [&lt;c01ddb1c&gt;] (do_raw_spin_lock+0xf0/0x144)
[   79.660000] [&lt;c01ddb1c&gt;] (do_raw_spin_lock+0xf0/0x144) from [&lt;c03a8468&gt;] (_raw_spin_lock_irqsave+0x4c/0x58)
[   79.660000] [&lt;c03a8468&gt;] (_raw_spin_lock_irqsave+0x4c/0x58) from [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4)
[   79.660000] [&lt;c026ea3c&gt;] (mxs_mmc_enable_sdio_irq+0x18/0xd4) from [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8)
[   79.660000] [&lt;c026f7fc&gt;] (mxs_mmc_irq_handler+0xd4/0xe8) from [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254)
[   79.660000] [&lt;c006bdd8&gt;] (handle_irq_event_percpu+0x70/0x254) from [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c)
[   79.660000] [&lt;c006bff8&gt;] (handle_irq_event+0x3c/0x5c) from [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110)
[   79.660000] [&lt;c006e6d0&gt;] (handle_level_irq+0x90/0x110) from [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50)
[   79.660000] [&lt;c006b930&gt;] (generic_handle_irq+0x38/0x50) from [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84)
[   79.660000] [&lt;c00102fc&gt;] (handle_IRQ+0x30/0x84) from [&lt;c000f058&gt;] (__irq_svc+0x38/0x60)
[   79.660000] [&lt;c000f058&gt;] (__irq_svc+0x38/0x60) from [&lt;c0010520&gt;] (default_idle+0x2c/0x40)
[   79.660000] [&lt;c0010520&gt;] (default_idle+0x2c/0x40) from [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc)
[   79.660000] [&lt;c0010a90&gt;] (cpu_idle+0x64/0xcc) from [&lt;c04ff858&gt;] (start_kernel+0x244/0x2c8)

Signed-off-by: Lauri Hintsala &lt;lauri.hintsala@bluegiga.com&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-pci: CaFe has broken card detection</title>
<updated>2012-08-02T13:37:57+00:00</updated>
<author>
<name>Daniel Drake</name>
<email>dsd@laptop.org</email>
</author>
<published>2012-07-03T22:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=99a779227aef0e93a77f7b962b266416f0ead9a6'/>
<id>99a779227aef0e93a77f7b962b266416f0ead9a6</id>
<content type='text'>
commit 55fc05b7414274f17795cd0e8a3b1546f3649d5e upstream.

At http://dev.laptop.org/ticket/11980 we have determined that the
Marvell CaFe SDHCI controller reports bad card presence during
resume. It reports that no card is present even when it is.
This is a regression -- resume worked back around 2.6.37.

Around 400ms after resuming, a "card inserted" interrupt is
generated, at which point it starts reporting presence.

Work around this hardware oddity by setting the
SDHCI_QUIRK_BROKEN_CARD_DETECTION flag.
Thanks to Chris Ball for helping with diagnosis.

Signed-off-by: Daniel Drake &lt;dsd@laptop.org&gt;
[stable@: please apply to 3.0+]
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 55fc05b7414274f17795cd0e8a3b1546f3649d5e upstream.

At http://dev.laptop.org/ticket/11980 we have determined that the
Marvell CaFe SDHCI controller reports bad card presence during
resume. It reports that no card is present even when it is.
This is a regression -- resume worked back around 2.6.37.

Around 400ms after resuming, a "card inserted" interrupt is
generated, at which point it starts reporting presence.

Work around this hardware oddity by setting the
SDHCI_QUIRK_BROKEN_CARD_DETECTION flag.
Thanks to Chris Ball for helping with diagnosis.

Signed-off-by: Daniel Drake &lt;dsd@laptop.org&gt;
[stable@: please apply to 3.0+]
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdio: avoid spurious calls to interrupt handlers</title>
<updated>2012-05-30T23:43:57+00:00</updated>
<author>
<name>Nicolas Pitre</name>
<email>nicolas.pitre@linaro.org</email>
</author>
<published>2012-04-16T23:16:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e2538ce447011463817a5365455b163a826bea88'/>
<id>e2538ce447011463817a5365455b163a826bea88</id>
<content type='text'>
commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream.

Commit 06e8935feb ("optimized SDIO IRQ handling for single irq")
introduced some spurious calls to SDIO function interrupt handlers,
such as when the SDIO IRQ thread is started, or the safety check
performed upon a system resume.  Let's add a flag to perform the
optimization only when a real interrupt is signaled by the host
driver and we know there is no point confirming it.

Reported-by: Sujit Reddy Thumma &lt;sthumma@codeaurora.org&gt;
Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit bbbc4c4d8c5face097d695f9bf3a39647ba6b7e7 upstream.

Commit 06e8935feb ("optimized SDIO IRQ handling for single irq")
introduced some spurious calls to SDIO function interrupt handlers,
such as when the SDIO IRQ thread is started, or the safety check
performed upon a system resume.  Let's add a flag to perform the
optimization only when a real interrupt is signaled by the host
driver and we know there is no point confirming it.

Reported-by: Sujit Reddy Thumma &lt;sthumma@codeaurora.org&gt;
Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: unbreak sdhci-esdhc-imx on i.MX25</title>
<updated>2012-05-11T12:13:52+00:00</updated>
<author>
<name>Eric Bénard</name>
<email>eric@eukrea.com</email>
</author>
<published>2012-04-18T00:30:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7efde257ac4e92ca6b403b72873126ebfd0e9308'/>
<id>7efde257ac4e92ca6b403b72873126ebfd0e9308</id>
<content type='text'>
commit b89152824f993a9572b47eb31f4579feadeac34c upstream.

This was broken by me in 37865fe91582582a6f6c00652f6a2b1ff71f8a78
("mmc: sdhci-esdhc-imx: fix timeout on i.MX's sdhci") where more
extensive tests would have shown that read or write of data to the
card were failing (even if the partition table was correctly read).

Signed-off-by: Eric Bénard &lt;eric@eukrea.com&gt;
Acked-by: Wolfram Sang &lt;w.sang@pengutronix.de&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b89152824f993a9572b47eb31f4579feadeac34c upstream.

This was broken by me in 37865fe91582582a6f6c00652f6a2b1ff71f8a78
("mmc: sdhci-esdhc-imx: fix timeout on i.MX's sdhci") where more
extensive tests would have shown that read or write of data to the
card were failing (even if the partition table was correctly read).

Signed-off-by: Eric Bénard &lt;eric@eukrea.com&gt;
Acked-by: Wolfram Sang &lt;w.sang@pengutronix.de&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: fixes for eMMC v4.5 sanitize operation</title>
<updated>2012-05-11T12:13:52+00:00</updated>
<author>
<name>Adrian Hunter</name>
<email>adrian.hunter@intel.com</email>
</author>
<published>2012-04-05T11:45:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2e4e5f0d0317d1d9b01326e79f8dce7215fc3c41'/>
<id>2e4e5f0d0317d1d9b01326e79f8dce7215fc3c41</id>
<content type='text'>
commit 283028122db37621b124f079ca8eae5b64807ad4 upstream.

eMMC v4.5 sanitize operation erases all copies of unmapped
data.  However trim or erase operations must be used first
to unmap the required sectors.  That was not being done.

Fixes apply to linux 3.2 on.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 283028122db37621b124f079ca8eae5b64807ad4 upstream.

eMMC v4.5 sanitize operation erases all copies of unmapped
data.  However trim or erase operations must be used first
to unmap the required sectors.  That was not being done.

Fixes apply to linux 3.2 on.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: fixes for eMMC v4.5 discard operation</title>
<updated>2012-05-11T12:13:51+00:00</updated>
<author>
<name>Adrian Hunter</name>
<email>adrian.hunter@intel.com</email>
</author>
<published>2012-04-05T11:45:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=531503404e61ab77da44f0ea7e6b2ae16bcf004a'/>
<id>531503404e61ab77da44f0ea7e6b2ae16bcf004a</id>
<content type='text'>
commit 7194efb8f063ee3aa0cb50d9002348887e68ec10 upstream.

eMMC v4.5 discard operation is significantly different from the
existing trim operation because it is not guaranteed to work with
the new sanitize operation.  Consequently mmc_can_trim() is
separated from mmc_can_discard().

Also the new discard operation does not result in the sectors being
set to all-zeros, so discard_zeroes_data must not be set.

In addition, the new discard has the same timeout as trim, but from
v4.5 trim is defined to use the hc timeout.  The timeout calculation
is adjusted accordingly.

Fixes apply to linux 3.2 on.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 7194efb8f063ee3aa0cb50d9002348887e68ec10 upstream.

eMMC v4.5 discard operation is significantly different from the
existing trim operation because it is not guaranteed to work with
the new sanitize operation.  Consequently mmc_can_trim() is
separated from mmc_can_discard().

Also the new discard operation does not result in the sectors being
set to all-zeros, so discard_zeroes_data must not be set.

In addition, the new discard has the same timeout as trim, but from
v4.5 trim is defined to use the hc timeout.  The timeout calculation
is adjusted accordingly.

Fixes apply to linux 3.2 on.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: atmel-mci: correct data timeout computation</title>
<updated>2012-04-13T15:33:49+00:00</updated>
<author>
<name>Ludovic Desroches</name>
<email>ludovic.desroches@atmel.com</email>
</author>
<published>2012-03-28T10:28:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bd4a0cb6f12b87c701f25519acb89308321023d9'/>
<id>bd4a0cb6f12b87c701f25519acb89308321023d9</id>
<content type='text'>
commit 66292ad92c6d3f2f1c137a1c826b331ca8595dfd upstream.

The HSMCI operates at a rate of up to Master Clock divided by two.
Moreover previous calculation can cause overflows and so wrong
timeouts.

Signed-off-by: Ludovic Desroches &lt;ludovic.desroches@atmel.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 66292ad92c6d3f2f1c137a1c826b331ca8595dfd upstream.

The HSMCI operates at a rate of up to Master Clock divided by two.
Moreover previous calculation can cause overflows and so wrong
timeouts.

Signed-off-by: Ludovic Desroches &lt;ludovic.desroches@atmel.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
