<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/bluetooth/btmrvl_sdio.c, branch v4.9.128</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>btmrvl: avoid double-disable_irq() race</title>
<updated>2017-10-21T15:21:38+00:00</updated>
<author>
<name>Jeffy Chen</name>
<email>jeffy.chen@rock-chips.com</email>
</author>
<published>2017-01-23T04:18:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8a7a752441a95b861079707cb7467ecc70b4836e'/>
<id>8a7a752441a95b861079707cb7467ecc70b4836e</id>
<content type='text'>
[ Upstream commit 9af02d86e11dc409e5c3de46e81c0a492ba58905 ]

It's much the same as what we did for mwifiex in:
b9da4d2 mwifiex: avoid double-disable_irq() race

"We have a race where the wakeup IRQ might be in flight while we're
calling mwifiex_disable_wake() from resume(). This can leave us
disabling the IRQ twice.

Let's disable the IRQ and enable it in case if we have double-disabled
it."

Signed-off-by: Jeffy Chen &lt;jeffy.chen@rock-chips.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&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>
[ Upstream commit 9af02d86e11dc409e5c3de46e81c0a492ba58905 ]

It's much the same as what we did for mwifiex in:
b9da4d2 mwifiex: avoid double-disable_irq() race

"We have a race where the wakeup IRQ might be in flight while we're
calling mwifiex_disable_wake() from resume(). This can leave us
disabling the IRQ twice.

Let's disable the IRQ and enable it in case if we have double-disabled
it."

Signed-off-by: Jeffy Chen &lt;jeffy.chen@rock-chips.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: reset is_suspending flag in failure path</title>
<updated>2016-07-18T08:13:02+00:00</updated>
<author>
<name>Amitkumar Karwar</name>
<email>akarwar@marvell.com</email>
</author>
<published>2016-07-15T10:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e7acf43024e95faa7460e77fe7e0fec2a3de582a'/>
<id>e7acf43024e95faa7460e77fe7e0fec2a3de582a</id>
<content type='text'>
is_suspending flag remains on when host sleep fails to enable. Data
path is unnecessarily blocked after this. This patch ensures to
reset the flag in failure path.

Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
is_suspending flag remains on when host sleep fails to enable. Data
path is unnecessarily blocked after this. This patch ensures to
reset the flag in failure path.

Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: fix slab-out-of-bounds access in btmrvl_sdio</title>
<updated>2016-07-08T10:20:57+00:00</updated>
<author>
<name>Ricky Liang</name>
<email>jcliang@chromium.org</email>
</author>
<published>2016-06-28T07:06:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d2f302409e022506640363277ea8f8034c558c6c'/>
<id>d2f302409e022506640363277ea8f8034c558c6c</id>
<content type='text'>
Kasan reported slab-out-of-bounds access in btmrvl_sdio:

[   33.055400] ==================================================================
[   33.062585] BUG: KASAN: slab-out-of-bounds in memcpy+0x24/0x50 at addr ffffffc0d89b4a00
[   33.070529] Read of size 256 by task btmrvl_main_ser/3576
[   33.075885] =============================================================================
[   33.084002] BUG kmalloc-256 (Tainted: G    B         ): kasan: bad access detected
[   33.091511] -----------------------------------------------------------------------------
&lt;snip...&gt;
[   33.413498] Call trace:
[   33.415928] [&lt;ffffffc00020a440&gt;] dump_backtrace+0x0/0x190
[   33.421288] [&lt;ffffffc00020a5ec&gt;] show_stack+0x1c/0x28
[   33.426305] [&lt;ffffffc000b3288c&gt;] dump_stack+0xa0/0xf8
[   33.431320] [&lt;ffffffc000396130&gt;] print_trailer+0x158/0x16c
[   33.436765] [&lt;ffffffc0003962cc&gt;] object_err+0x48/0x5c
[   33.441780] [&lt;ffffffc00039be24&gt;] kasan_report+0x344/0x510
[   33.447141] [&lt;ffffffc00039afd8&gt;] __asan_loadN+0x20/0x150
[   33.452413] [&lt;ffffffc00039b60c&gt;] memcpy+0x20/0x50
[   33.457084] [&lt;ffffffc000595fcc&gt;] swiotlb_tbl_map_single+0x2ec/0x310
[   33.463305] [&lt;ffffffc000596b54&gt;] map_single+0x24/0x30
[   33.468320] [&lt;ffffffc0005970c8&gt;] swiotlb_map_sg_attrs+0xec/0x21c
[   33.474286] [&lt;ffffffc000219d4c&gt;] __swiotlb_map_sg_attrs+0x48/0xec
[   33.480339] [&lt;ffffffc0008ea610&gt;] msdc_prepare_data.isra.11+0xf0/0x11c
[   33.486733] [&lt;ffffffc0008ecbd0&gt;] msdc_ops_request+0x74/0xf0
[   33.492266] [&lt;ffffffc0008c6b38&gt;] __mmc_start_request+0x78/0x8c
[   33.498057] [&lt;ffffffc0008c6d6c&gt;] mmc_start_request+0x220/0x240
[   33.503848] [&lt;ffffffc0008c6e04&gt;] mmc_wait_for_req+0x78/0x250
[   33.509468] [&lt;ffffffc0008d70fc&gt;] mmc_io_rw_extended+0x2ec/0x388
[   33.515347] [&lt;ffffffc0008d8fc0&gt;] sdio_io_rw_ext_helper+0x160/0x268
[   33.521483] [&lt;ffffffc0008d93fc&gt;] sdio_writesb+0x40/0x50
[   33.526677] [&lt;ffffffbffc338b38&gt;] btmrvl_sdio_host_to_card+0x124/0x1bc [btmrvl_sdio]
[   33.534283] [&lt;ffffffbffc3290a0&gt;] btmrvl_service_main_thread+0x384/0x428 [btmrvl]
[   33.541626] [&lt;ffffffc0002518e8&gt;] kthread+0x140/0x158
[   33.546550] Memory state around the buggy address:
[   33.551305]  ffffffc0d89b4980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.558474]  ffffffc0d89b4a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[   33.565643] &gt;ffffffc0d89b4a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc
[   33.572809]                                                                 ^
[   33.579889]  ffffffc0d89b4b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.587055]  ffffffc0d89b4b80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.594221] ==================================================================

The cause of this is that btmrvl_sdio_host_to_card can access memory region
out of its allocated space due to:

  1. the requested block size is smaller than SDIO_BLOCK_SIZE, and/or
  2. the allocated memory is not BTSDIO_DMA_ALIGN-aligned.

This patch fixes the issue by allocating a buffer which is big enough for
SDIO_BLOCK_SIZE transfer and/or BTSDIO_DMA_ALIGN address relocation.

Signed-off-by: Ricky Liang &lt;jcliang@chromium.org&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Kasan reported slab-out-of-bounds access in btmrvl_sdio:

[   33.055400] ==================================================================
[   33.062585] BUG: KASAN: slab-out-of-bounds in memcpy+0x24/0x50 at addr ffffffc0d89b4a00
[   33.070529] Read of size 256 by task btmrvl_main_ser/3576
[   33.075885] =============================================================================
[   33.084002] BUG kmalloc-256 (Tainted: G    B         ): kasan: bad access detected
[   33.091511] -----------------------------------------------------------------------------
&lt;snip...&gt;
[   33.413498] Call trace:
[   33.415928] [&lt;ffffffc00020a440&gt;] dump_backtrace+0x0/0x190
[   33.421288] [&lt;ffffffc00020a5ec&gt;] show_stack+0x1c/0x28
[   33.426305] [&lt;ffffffc000b3288c&gt;] dump_stack+0xa0/0xf8
[   33.431320] [&lt;ffffffc000396130&gt;] print_trailer+0x158/0x16c
[   33.436765] [&lt;ffffffc0003962cc&gt;] object_err+0x48/0x5c
[   33.441780] [&lt;ffffffc00039be24&gt;] kasan_report+0x344/0x510
[   33.447141] [&lt;ffffffc00039afd8&gt;] __asan_loadN+0x20/0x150
[   33.452413] [&lt;ffffffc00039b60c&gt;] memcpy+0x20/0x50
[   33.457084] [&lt;ffffffc000595fcc&gt;] swiotlb_tbl_map_single+0x2ec/0x310
[   33.463305] [&lt;ffffffc000596b54&gt;] map_single+0x24/0x30
[   33.468320] [&lt;ffffffc0005970c8&gt;] swiotlb_map_sg_attrs+0xec/0x21c
[   33.474286] [&lt;ffffffc000219d4c&gt;] __swiotlb_map_sg_attrs+0x48/0xec
[   33.480339] [&lt;ffffffc0008ea610&gt;] msdc_prepare_data.isra.11+0xf0/0x11c
[   33.486733] [&lt;ffffffc0008ecbd0&gt;] msdc_ops_request+0x74/0xf0
[   33.492266] [&lt;ffffffc0008c6b38&gt;] __mmc_start_request+0x78/0x8c
[   33.498057] [&lt;ffffffc0008c6d6c&gt;] mmc_start_request+0x220/0x240
[   33.503848] [&lt;ffffffc0008c6e04&gt;] mmc_wait_for_req+0x78/0x250
[   33.509468] [&lt;ffffffc0008d70fc&gt;] mmc_io_rw_extended+0x2ec/0x388
[   33.515347] [&lt;ffffffc0008d8fc0&gt;] sdio_io_rw_ext_helper+0x160/0x268
[   33.521483] [&lt;ffffffc0008d93fc&gt;] sdio_writesb+0x40/0x50
[   33.526677] [&lt;ffffffbffc338b38&gt;] btmrvl_sdio_host_to_card+0x124/0x1bc [btmrvl_sdio]
[   33.534283] [&lt;ffffffbffc3290a0&gt;] btmrvl_service_main_thread+0x384/0x428 [btmrvl]
[   33.541626] [&lt;ffffffc0002518e8&gt;] kthread+0x140/0x158
[   33.546550] Memory state around the buggy address:
[   33.551305]  ffffffc0d89b4980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.558474]  ffffffc0d89b4a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[   33.565643] &gt;ffffffc0d89b4a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc
[   33.572809]                                                                 ^
[   33.579889]  ffffffc0d89b4b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.587055]  ffffffc0d89b4b80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[   33.594221] ==================================================================

The cause of this is that btmrvl_sdio_host_to_card can access memory region
out of its allocated space due to:

  1. the requested block size is smaller than SDIO_BLOCK_SIZE, and/or
  2. the allocated memory is not BTSDIO_DMA_ALIGN-aligned.

This patch fixes the issue by allocating a buffer which is big enough for
SDIO_BLOCK_SIZE transfer and/or BTSDIO_DMA_ALIGN address relocation.

Signed-off-by: Ricky Liang &lt;jcliang@chromium.org&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>btmrvl: add platform specific wakeup interrupt support</title>
<updated>2016-05-02T17:26:15+00:00</updated>
<author>
<name>Xinming Hu</name>
<email>huxm@marvell.com</email>
</author>
<published>2016-04-26T13:57:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bb7f4f0bcee6844632d7366d6abff4b9996ad454'/>
<id>bb7f4f0bcee6844632d7366d6abff4b9996ad454</id>
<content type='text'>
On some arm-based platforms, we need to configure platform specific
parameters by device tree node and also define our node as a child
node of parent SDIO host controller.
This patch parses these parameters from device tree. It includes
calibration data download to firmware, wakeup pin configured to firmware,
and soc specific wake up gpio, which will be set as wakeup interrupt pin.

Signed-off-by: Xinming Hu &lt;huxm@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On some arm-based platforms, we need to configure platform specific
parameters by device tree node and also define our node as a child
node of parent SDIO host controller.
This patch parses these parameters from device tree. It includes
calibration data download to firmware, wakeup pin configured to firmware,
and soc specific wake up gpio, which will be set as wakeup interrupt pin.

Signed-off-by: Xinming Hu &lt;huxm@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl_sdio: fix firmware activation failure</title>
<updated>2016-03-10T18:51:29+00:00</updated>
<author>
<name>Wei-Ning Huang</name>
<email>wnhuang@chromium.org</email>
</author>
<published>2016-03-08T03:40:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9a01242dc7fc4d5fe3f722afbf35b33aa414cd2f'/>
<id>9a01242dc7fc4d5fe3f722afbf35b33aa414cd2f</id>
<content type='text'>
In some case, the btmrvl_sdio firmware would fail to active within the
polling time. Increase the polling interval to 100 msec to fix the
issue.

Signed-off-by: Wei-Ning Huang &lt;wnhuang@chromium.org&gt;
Signed-off-by: Wei-Ning Huang &lt;wnhuang@google.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some case, the btmrvl_sdio firmware would fail to active within the
polling time. Increase the polling interval to 100 msec to fix the
issue.

Signed-off-by: Wei-Ning Huang &lt;wnhuang@chromium.org&gt;
Signed-off-by: Wei-Ning Huang &lt;wnhuang@google.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: don't send data to firmware while processing suspend</title>
<updated>2016-01-06T15:37:14+00:00</updated>
<author>
<name>Chin-Ran Lo</name>
<email>crlo@marvell.com</email>
</author>
<published>2016-01-06T14:34:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8cf60cf238ce1bea38593321e6ea8561fc32e38d'/>
<id>8cf60cf238ce1bea38593321e6ea8561fc32e38d</id>
<content type='text'>
Usually when driver sends data to firmware it receives TX_DONE
(DN_LD_HOST_INT_STATUS) interrupt from firmware right away.
It's also observed that some times the fireware could delay
sending DN_LD_HOST_INT_STATUS interrupt. If driver sends data to
firmware during suspend processing and the TX_DONE interrupt is
delayed, it may come back at wrong time when SDIO host driver is
in the middle of suspending.

Block any data from stack while suspending. Also skip sending
data that are already in driver tx_queue.

Don't purge the skb queue on suspend to avoid intermittent music
after system resumes from S3.

Signed-off-by: Chin-Ran Lo &lt;crlo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Usually when driver sends data to firmware it receives TX_DONE
(DN_LD_HOST_INT_STATUS) interrupt from firmware right away.
It's also observed that some times the fireware could delay
sending DN_LD_HOST_INT_STATUS interrupt. If driver sends data to
firmware during suspend processing and the TX_DONE interrupt is
delayed, it may come back at wrong time when SDIO host driver is
in the middle of suspending.

Block any data from stack while suspending. Also skip sending
data that are already in driver tx_queue.

Don't purge the skb queue on suspend to avoid intermittent music
after system resumes from S3.

Signed-off-by: Chin-Ran Lo &lt;crlo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: fix hung task warning dump</title>
<updated>2016-01-04T18:25:56+00:00</updated>
<author>
<name>Chin-Ran Lo</name>
<email>crlo@marvell.com</email>
</author>
<published>2015-12-29T12:26:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=86f7ac77d4035e22ec7e58dcdb96327e2ecc3a9b'/>
<id>86f7ac77d4035e22ec7e58dcdb96327e2ecc3a9b</id>
<content type='text'>
It's been observed that when bluetooth driver fails to
activate the firmware, below hung task warning dump is
displayed after 120 seconds.

[   36.461022] Bluetooth: vendor=0x2df, device=0x912e, class=255, fn=2
[   56.512128] Bluetooth: FW failed to be active in time!
[   56.517264] Bluetooth: Downloading firmware failed!
[  240.252176] INFO: task kworker/3:2:129 blocked for more than 120 seconds.
[  240.258931]       Not tainted 3.18.0 #254
[  240.262972] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  240.270751] kworker/3:2     D ffffffc000205760     0   129      2 0x00000000
[  240.277825] Workqueue: events request_firmware_work_func
[  240.283134] Call trace:
[  240.285581] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.290693] [&lt;ffffffc00088dae0&gt;] __schedule+0x540/0x7b8
[  240.295921] [&lt;ffffffc00088ddd0&gt;] schedule+0x78/0x84
[  240.300764] [&lt;ffffffc0006dfd48&gt;] __mmc_claim_host+0xe8/0x1c8
[  240.306395] [&lt;ffffffc0006edd6c&gt;] sdio_claim_host+0x74/0x84
[  240.311840] [&lt;ffffffbffc163d08&gt;] 0xffffffbffc163d08
[  240.316685] [&lt;ffffffbffc165104&gt;] 0xffffffbffc165104
[  240.321524] [&lt;ffffffbffc130cf8&gt;] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
[  240.327918] [&lt;ffffffbffc12ee88&gt;] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
[  240.334741] [&lt;ffffffc000596780&gt;] request_firmware_work_func+0x44/0x80
[  240.341127] [&lt;ffffffc00023b934&gt;] process_one_work+0x2ec/0x50c
[  240.346831] [&lt;ffffffc00023c6a0&gt;] worker_thread+0x350/0x470
[  240.352272] [&lt;ffffffc0002419bc&gt;] kthread+0xf0/0xfc
[  240.357019] 2 locks held by kworker/3:2/129:
[  240.361248]  #0:  ("events"){.+.+.+}, at: [&lt;ffffffc00023b840&gt;] process_one_work+0x1f8/0x50c
[  240.369562]  #1:  ((&amp;fw_work-&gt;work)){+.+.+.}, at: [&lt;ffffffc00023b840&gt;] process_one_work+0x1f8/0x50c
[  240.378589]   task                        PC stack   pid father
[  240.384501] kworker/1:1     D ffffffc000205760     0    40      2 0x00000000
[  240.391524] Workqueue: events mtk_atomic_work
[  240.395884] Call trace:
[  240.398317] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.403448] [&lt;ffffffc00027279c&gt;] lock_acquire+0x128/0x164
[  240.408821] kworker/3:2     D ffffffc000205760     0   129      2 0x00000000
[  240.415867] Workqueue: events request_firmware_work_func
[  240.421138] Call trace:
[  240.423589] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.428688] [&lt;ffffffc00088dae0&gt;] __schedule+0x540/0x7b8
[  240.433886] [&lt;ffffffc00088ddd0&gt;] schedule+0x78/0x84
[  240.438732] [&lt;ffffffc0006dfd48&gt;] __mmc_claim_host+0xe8/0x1c8
[  240.444361] [&lt;ffffffc0006edd6c&gt;] sdio_claim_host+0x74/0x84
[  240.449801] [&lt;ffffffbffc163d08&gt;] 0xffffffbffc163d08
[  240.454649] [&lt;ffffffbffc165104&gt;] 0xffffffbffc165104
[  240.459486] [&lt;ffffffbffc130cf8&gt;] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
[  240.465882] [&lt;ffffffbffc12ee88&gt;] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
[  240.472705] [&lt;ffffffc000596780&gt;] request_firmware_work_func+0x44/0x80
[  240.479090] [&lt;ffffffc00023b934&gt;] process_one_work+0x2ec/0x50c
[  240.484794] [&lt;ffffffc00023c6a0&gt;] worker_thread+0x350/0x470
[  240.490231] [&lt;ffffffc0002419bc&gt;] kthread+0xf0/0xfc

This patch adds missing sdio_release_host() call so that wlan driver
thread can claim sdio host.

Fixes: 4863e4cc31d647e1 ("Bluetooth: btmrvl: release sdio bus after firmware is up")
Signed-off-by: Chin-Ran Lo &lt;crlo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's been observed that when bluetooth driver fails to
activate the firmware, below hung task warning dump is
displayed after 120 seconds.

[   36.461022] Bluetooth: vendor=0x2df, device=0x912e, class=255, fn=2
[   56.512128] Bluetooth: FW failed to be active in time!
[   56.517264] Bluetooth: Downloading firmware failed!
[  240.252176] INFO: task kworker/3:2:129 blocked for more than 120 seconds.
[  240.258931]       Not tainted 3.18.0 #254
[  240.262972] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  240.270751] kworker/3:2     D ffffffc000205760     0   129      2 0x00000000
[  240.277825] Workqueue: events request_firmware_work_func
[  240.283134] Call trace:
[  240.285581] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.290693] [&lt;ffffffc00088dae0&gt;] __schedule+0x540/0x7b8
[  240.295921] [&lt;ffffffc00088ddd0&gt;] schedule+0x78/0x84
[  240.300764] [&lt;ffffffc0006dfd48&gt;] __mmc_claim_host+0xe8/0x1c8
[  240.306395] [&lt;ffffffc0006edd6c&gt;] sdio_claim_host+0x74/0x84
[  240.311840] [&lt;ffffffbffc163d08&gt;] 0xffffffbffc163d08
[  240.316685] [&lt;ffffffbffc165104&gt;] 0xffffffbffc165104
[  240.321524] [&lt;ffffffbffc130cf8&gt;] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
[  240.327918] [&lt;ffffffbffc12ee88&gt;] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
[  240.334741] [&lt;ffffffc000596780&gt;] request_firmware_work_func+0x44/0x80
[  240.341127] [&lt;ffffffc00023b934&gt;] process_one_work+0x2ec/0x50c
[  240.346831] [&lt;ffffffc00023c6a0&gt;] worker_thread+0x350/0x470
[  240.352272] [&lt;ffffffc0002419bc&gt;] kthread+0xf0/0xfc
[  240.357019] 2 locks held by kworker/3:2/129:
[  240.361248]  #0:  ("events"){.+.+.+}, at: [&lt;ffffffc00023b840&gt;] process_one_work+0x1f8/0x50c
[  240.369562]  #1:  ((&amp;fw_work-&gt;work)){+.+.+.}, at: [&lt;ffffffc00023b840&gt;] process_one_work+0x1f8/0x50c
[  240.378589]   task                        PC stack   pid father
[  240.384501] kworker/1:1     D ffffffc000205760     0    40      2 0x00000000
[  240.391524] Workqueue: events mtk_atomic_work
[  240.395884] Call trace:
[  240.398317] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.403448] [&lt;ffffffc00027279c&gt;] lock_acquire+0x128/0x164
[  240.408821] kworker/3:2     D ffffffc000205760     0   129      2 0x00000000
[  240.415867] Workqueue: events request_firmware_work_func
[  240.421138] Call trace:
[  240.423589] [&lt;ffffffc000205760&gt;] __switch_to+0x80/0x8c
[  240.428688] [&lt;ffffffc00088dae0&gt;] __schedule+0x540/0x7b8
[  240.433886] [&lt;ffffffc00088ddd0&gt;] schedule+0x78/0x84
[  240.438732] [&lt;ffffffc0006dfd48&gt;] __mmc_claim_host+0xe8/0x1c8
[  240.444361] [&lt;ffffffc0006edd6c&gt;] sdio_claim_host+0x74/0x84
[  240.449801] [&lt;ffffffbffc163d08&gt;] 0xffffffbffc163d08
[  240.454649] [&lt;ffffffbffc165104&gt;] 0xffffffbffc165104
[  240.459486] [&lt;ffffffbffc130cf8&gt;] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
[  240.465882] [&lt;ffffffbffc12ee88&gt;] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
[  240.472705] [&lt;ffffffc000596780&gt;] request_firmware_work_func+0x44/0x80
[  240.479090] [&lt;ffffffc00023b934&gt;] process_one_work+0x2ec/0x50c
[  240.484794] [&lt;ffffffc00023c6a0&gt;] worker_thread+0x350/0x470
[  240.490231] [&lt;ffffffc0002419bc&gt;] kthread+0xf0/0xfc

This patch adds missing sdio_release_host() call so that wlan driver
thread can claim sdio host.

Fixes: 4863e4cc31d647e1 ("Bluetooth: btmrvl: release sdio bus after firmware is up")
Signed-off-by: Chin-Ran Lo &lt;crlo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: Use new hci_skb_pkt_* wrappers for drivers</title>
<updated>2015-11-19T16:50:27+00:00</updated>
<author>
<name>Marcel Holtmann</name>
<email>marcel@holtmann.org</email>
</author>
<published>2015-11-05T06:33:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=618e8bc228cda7b8c517caac40a45ee909b8672d'/>
<id>618e8bc228cda7b8c517caac40a45ee909b8672d</id>
<content type='text'>
The new hci_skb_pkt_* wrappers are mainly intented for drivers to
require less knowledge about bt_cb(sbk) handling. So after converting
the core packet handling, convert all drivers.

Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new hci_skb_pkt_* wrappers are mainly intented for drivers to
require less knowledge about bt_cb(sbk) handling. So after converting
the core packet handling, convert all drivers.

Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: Comparison to NULL re-written</title>
<updated>2015-09-25T19:39:04+00:00</updated>
<author>
<name>Prasanna Karthik</name>
<email>mkarthi3@visteon.com</email>
</author>
<published>2015-09-25T09:03:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1f438c6138ac5739ce16c8db04689e438d65dfe6'/>
<id>1f438c6138ac5739ce16c8db04689e438d65dfe6</id>
<content type='text'>
NOT NULL comparison modified to be readable, reported
by checkpatch.

Signed-off-by: Prasanna Karthik &lt;mkarthi3@visteon.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
NOT NULL comparison modified to be readable, reported
by checkpatch.

Signed-off-by: Prasanna Karthik &lt;mkarthi3@visteon.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: btmrvl: add sd8997 chipset support</title>
<updated>2015-09-22T09:51:24+00:00</updated>
<author>
<name>Amitkumar Karwar</name>
<email>akarwar@marvell.com</email>
</author>
<published>2015-09-21T10:06:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f0ef67485f5918794143b7a85d60c1a52bc690ec'/>
<id>f0ef67485f5918794143b7a85d60c1a52bc690ec</id>
<content type='text'>
This patch adds support for Marvell's new chipset SD8997.
Register offsets and supported feature flags are updated.

Signed-off-by: Zhaoyang Liu &lt;liuzy@marvell.com&gt;
Signed-off-by: Cathy Luo &lt;cluo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds support for Marvell's new chipset SD8997.
Register offsets and supported feature flags are updated.

Signed-off-by: Zhaoyang Liu &lt;liuzy@marvell.com&gt;
Signed-off-by: Cathy Luo &lt;cluo@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
