<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb/chipidea, branch v3.13</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>usb: chipidea: fix nobody cared IRQ when booting with host role</title>
<updated>2013-12-09T21:14:12+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2013-12-05T07:20:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5a1e1456fc633da5291285b1fff75d2a7507375b'/>
<id>5a1e1456fc633da5291285b1fff75d2a7507375b</id>
<content type='text'>
If we connect Male-A-To-Male-A cable between otg-host and host pc,
the ci-&gt;vbus_active is set wrongly, and cause the controller run
at peripheral mode when we load gadget module (ci_udc_start will be run),
but the software runs at host mode due to id = 0. The ehci_irq
can't handle suspend (USBi_SLI) interrupt which is enabled for
peripheral mode, it causes no one will handle irq error.

This patch is needed for 3.12 stable

Cc: stable &lt;stable@vger.kernel.org&gt;
Acked-by: Michael Grzeschik &lt;mgr@pengutronix.de&gt;
Reported-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Tested-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
If we connect Male-A-To-Male-A cable between otg-host and host pc,
the ci-&gt;vbus_active is set wrongly, and cause the controller run
at peripheral mode when we load gadget module (ci_udc_start will be run),
but the software runs at host mode due to id = 0. The ehci_irq
can't handle suspend (USBi_SLI) interrupt which is enabled for
peripheral mode, it causes no one will handle irq error.

This patch is needed for 3.12 stable

Cc: stable &lt;stable@vger.kernel.org&gt;
Acked-by: Michael Grzeschik &lt;mgr@pengutronix.de&gt;
Reported-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Tested-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: host: Only disable the vbus regulator if it is not NULL</title>
<updated>2013-12-09T21:14:12+00:00</updated>
<author>
<name>Fabio Estevam</name>
<email>fabio.estevam@freescale.com</email>
</author>
<published>2013-12-05T07:20:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=cc5c9eb67f912cb2c349b04063ff9f444affbc59'/>
<id>cc5c9eb67f912cb2c349b04063ff9f444affbc59</id>
<content type='text'>
Commit 40ed51a4b (usb: chipidea: host: add vbus regulator
control) introduced a smatch complaint because regulator_disable() is called
without checking whether ci-&gt;platdata-&gt;reg_vbus is not NULL.

Fix this by adding the check.

This patch is needed for 3.12 stable

Cc: stable &lt;stable@vger.kernel.org&gt;
Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
Commit 40ed51a4b (usb: chipidea: host: add vbus regulator
control) introduced a smatch complaint because regulator_disable() is called
without checking whether ci-&gt;platdata-&gt;reg_vbus is not NULL.

Fix this by adding the check.

This patch is needed for 3.12 stable

Cc: stable &lt;stable@vger.kernel.org&gt;
Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm</title>
<updated>2013-11-13T22:55:21+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-11-13T22:55:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8ceafbfa91ffbdbb2afaea5c24ccb519ffb8b587'/>
<id>8ceafbfa91ffbdbb2afaea5c24ccb519ffb8b587</id>
<content type='text'>
Pull DMA mask updates from Russell King:
 "This series cleans up the handling of DMA masks in a lot of drivers,
  fixing some bugs as we go.

  Some of the more serious errors include:
   - drivers which only set their coherent DMA mask if the attempt to
     set the streaming mask fails.
   - drivers which test for a NULL dma mask pointer, and then set the
     dma mask pointer to a location in their module .data section -
     which will cause problems if the module is reloaded.

  To counter these, I have introduced two helper functions:
   - dma_set_mask_and_coherent() takes care of setting both the
     streaming and coherent masks at the same time, with the correct
     error handling as specified by the API.
   - dma_coerce_mask_and_coherent() which resolves the problem of
     drivers forcefully setting DMA masks.  This is more a marker for
     future work to further clean these locations up - the code which
     creates the devices really should be initialising these, but to fix
     that in one go along with this change could potentially be very
     disruptive.

  The last thing this series does is prise away some of Linux's addition
  to "DMA addresses are physical addresses and RAM always starts at
  zero".  We have ARM LPAE systems where all system memory is above 4GB
  physical, hence having DMA masks interpreted by (eg) the block layers
  as describing physical addresses in the range 0..DMAMASK fails on
  these platforms.  Santosh Shilimkar addresses this in this series; the
  patches were copied to the appropriate people multiple times but were
  ignored.

  Fixing this also gets rid of some ARM weirdness in the setup of the
  max*pfn variables, and brings ARM into line with every other Linux
  architecture as far as those go"

* 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm: (52 commits)
  ARM: 7805/1: mm: change max*pfn to include the physical offset of memory
  ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations
  ARM: 7796/1: scsi: Use dma_max_pfn(dev) helper for bounce_limit calculations
  ARM: 7795/1: mm: dma-mapping: Add dma_max_pfn(dev) helper function
  ARM: 7794/1: block: Rename parameter dma_mask to max_addr for blk_queue_bounce_limit()
  ARM: DMA-API: better handing of DMA masks for coherent allocations
  ARM: 7857/1: dma: imx-sdma: setup dma mask
  DMA-API: firmware/google/gsmi.c: avoid direct access to DMA masks
  DMA-API: dcdbas: update DMA mask handing
  DMA-API: dma: edma.c: no need to explicitly initialize DMA masks
  DMA-API: usb: musb: use platform_device_register_full() to avoid directly messing with dma masks
  DMA-API: crypto: remove last references to 'static struct device *dev'
  DMA-API: crypto: fix ixp4xx crypto platform device support
  DMA-API: others: use dma_set_coherent_mask()
  DMA-API: staging: use dma_set_coherent_mask()
  DMA-API: usb: use new dma_coerce_mask_and_coherent()
  DMA-API: usb: use dma_set_coherent_mask()
  DMA-API: parport: parport_pc.c: use dma_coerce_mask_and_coherent()
  DMA-API: net: octeon: use dma_coerce_mask_and_coherent()
  DMA-API: net: nxp/lpc_eth: use dma_coerce_mask_and_coherent()
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull DMA mask updates from Russell King:
 "This series cleans up the handling of DMA masks in a lot of drivers,
  fixing some bugs as we go.

  Some of the more serious errors include:
   - drivers which only set their coherent DMA mask if the attempt to
     set the streaming mask fails.
   - drivers which test for a NULL dma mask pointer, and then set the
     dma mask pointer to a location in their module .data section -
     which will cause problems if the module is reloaded.

  To counter these, I have introduced two helper functions:
   - dma_set_mask_and_coherent() takes care of setting both the
     streaming and coherent masks at the same time, with the correct
     error handling as specified by the API.
   - dma_coerce_mask_and_coherent() which resolves the problem of
     drivers forcefully setting DMA masks.  This is more a marker for
     future work to further clean these locations up - the code which
     creates the devices really should be initialising these, but to fix
     that in one go along with this change could potentially be very
     disruptive.

  The last thing this series does is prise away some of Linux's addition
  to "DMA addresses are physical addresses and RAM always starts at
  zero".  We have ARM LPAE systems where all system memory is above 4GB
  physical, hence having DMA masks interpreted by (eg) the block layers
  as describing physical addresses in the range 0..DMAMASK fails on
  these platforms.  Santosh Shilimkar addresses this in this series; the
  patches were copied to the appropriate people multiple times but were
  ignored.

  Fixing this also gets rid of some ARM weirdness in the setup of the
  max*pfn variables, and brings ARM into line with every other Linux
  architecture as far as those go"

* 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm: (52 commits)
  ARM: 7805/1: mm: change max*pfn to include the physical offset of memory
  ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations
  ARM: 7796/1: scsi: Use dma_max_pfn(dev) helper for bounce_limit calculations
  ARM: 7795/1: mm: dma-mapping: Add dma_max_pfn(dev) helper function
  ARM: 7794/1: block: Rename parameter dma_mask to max_addr for blk_queue_bounce_limit()
  ARM: DMA-API: better handing of DMA masks for coherent allocations
  ARM: 7857/1: dma: imx-sdma: setup dma mask
  DMA-API: firmware/google/gsmi.c: avoid direct access to DMA masks
  DMA-API: dcdbas: update DMA mask handing
  DMA-API: dma: edma.c: no need to explicitly initialize DMA masks
  DMA-API: usb: musb: use platform_device_register_full() to avoid directly messing with dma masks
  DMA-API: crypto: remove last references to 'static struct device *dev'
  DMA-API: crypto: fix ixp4xx crypto platform device support
  DMA-API: others: use dma_set_coherent_mask()
  DMA-API: staging: use dma_set_coherent_mask()
  DMA-API: usb: use new dma_coerce_mask_and_coherent()
  DMA-API: usb: use dma_set_coherent_mask()
  DMA-API: parport: parport_pc.c: use dma_coerce_mask_and_coherent()
  DMA-API: net: octeon: use dma_coerce_mask_and_coherent()
  DMA-API: net: nxp/lpc_eth: use dma_coerce_mask_and_coherent()
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>DMA-API: usb: use new dma_coerce_mask_and_coherent()</title>
<updated>2013-10-31T14:49:04+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2013-06-27T11:36:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e1fd7341837238c6c5380c5073887d238f706cf0'/>
<id>e1fd7341837238c6c5380c5073887d238f706cf0</id>
<content type='text'>
Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>DMA-API: usb: use dma_set_coherent_mask()</title>
<updated>2013-10-31T14:49:01+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2013-06-10T15:28:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=22d9d8e8316d7f69046c8805ce9aa8d9c43d4e5b'/>
<id>22d9d8e8316d7f69046c8805ce9aa8d9c43d4e5b</id>
<content type='text'>
The correct way for a driver to specify the coherent DMA mask is
not to directly access the field in the struct device, but to use
dma_set_coherent_mask().  Only arch and bus code should access this
member directly.

Convert all direct write accesses to using the correct API.

Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The correct way for a driver to specify the coherent DMA mask is
not to directly access the field in the struct device, but to use
dma_set_coherent_mask().  Only arch and bus code should access this
member directly.

Convert all direct write accesses to using the correct API.

Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Acked-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: only get vbus regulator for non-peripheral mode</title>
<updated>2013-10-30T16:41:49+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2013-10-30T01:19:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c2ec3a732a6bb65635693f6d86d2b7bf073b6148'/>
<id>c2ec3a732a6bb65635693f6d86d2b7bf073b6148</id>
<content type='text'>
If the user chooses peripheral mode for this controller, the vbus
regulator doesn't need to get, since the host will supply the vbus,
it can save one vbus pin for other usage.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Frank Li &lt;frank.li@freescale.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>
If the user chooses peripheral mode for this controller, the vbus
regulator doesn't need to get, since the host will supply the vbus,
it can save one vbus pin for other usage.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Frank Li &lt;frank.li@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: host: more enhancement when ci-&gt;hcd is NULL</title>
<updated>2013-10-29T23:43:37+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2013-10-22T03:13:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=df101c531eb737915349a1c4b677da7db55eaf69'/>
<id>df101c531eb737915349a1c4b677da7db55eaf69</id>
<content type='text'>
Like http://marc.info/?l=linux-usb&amp;m=138200449428874&amp;w=2 said:
two more things are needed to be done:

- If host_start fails, the host_stop should not be called, so we
add check that ci-&gt;hcd is not NULL.
- if the host_start fails at the beginning, we need to consider
regulator mismatch issue.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
Like http://marc.info/?l=linux-usb&amp;m=138200449428874&amp;w=2 said:
two more things are needed to be done:

- If host_start fails, the host_stop should not be called, so we
add check that ci-&gt;hcd is not NULL.
- if the host_start fails at the beginning, we need to consider
regulator mismatch issue.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge 3.12-rc6 into usb-next.</title>
<updated>2013-10-19T20:19:07+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2013-10-19T20:19:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5584cfbafc1a4c2a465f4423d351bb918c64cad0'/>
<id>5584cfbafc1a4c2a465f4423d351bb918c64cad0</id>
<content type='text'>
We want those USB fixes in here as well.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We want those USB fixes in here as well.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb/chipidea: fix oops on memory allocation failure</title>
<updated>2013-10-16T20:52:16+00:00</updated>
<author>
<name>Russell King - ARM Linux</name>
<email>linux@arm.linux.org.uk</email>
</author>
<published>2013-10-16T12:45:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=41314fea2ffb6dc716b7e698a47c68b329602fc0'/>
<id>41314fea2ffb6dc716b7e698a47c68b329602fc0</id>
<content type='text'>
When CMA fails to initialize in v3.12-rc4, the chipidea driver oopses
the kernel while trying to remove and put the HCD which doesn't exist:

WARNING: CPU: 0 PID: 6 at /home/rmk/git/linux-rmk/arch/arm/mm/dma-mapping.c:511
__dma_alloc+0x200/0x240()
coherent pool not initialised!
Modules linked in:
CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G        W    3.12.0-rc4+ #56
Workqueue: deferwq deferred_probe_work_func
Backtrace:
[&lt;c001218c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c0012328&gt;] (show_stack+0x18/0x1c)
 r6:c05fd9cc r5:000001ff r4:00000000 r3:df86ad00
[&lt;c0012310&gt;] (show_stack+0x0/0x1c) from [&lt;c05f3a4c&gt;] (dump_stack+0x70/0x8c)
[&lt;c05f39dc&gt;] (dump_stack+0x0/0x8c) from [&lt;c00230a8&gt;] (warn_slowpath_common+0x6c/0x8c)
 r4:df883a60 r3:df86ad00
[&lt;c002303c&gt;] (warn_slowpath_common+0x0/0x8c) from [&lt;c002316c&gt;] (warn_slowpath_fmt+0x38/0x40)
 r8:ffffffff r7:00001000 r6:c083b808 r5:00000000 r4:df2efe80
[&lt;c0023134&gt;] (warn_slowpath_fmt+0x0/0x40) from [&lt;c00196bc&gt;] (__dma_alloc+0x200/0x240)
 r3:00000000 r2:c05fda00
[&lt;c00194bc&gt;] (__dma_alloc+0x0/0x240) from [&lt;c001982c&gt;] (arm_dma_alloc+0x88/0xa0)
[&lt;c00197a4&gt;] (arm_dma_alloc+0x0/0xa0) from [&lt;c03e2904&gt;] (ehci_setup+0x1f4/0x438)
[&lt;c03e2710&gt;] (ehci_setup+0x0/0x438) from [&lt;c03cbd60&gt;] (usb_add_hcd+0x18c/0x664)
[&lt;c03cbbd4&gt;] (usb_add_hcd+0x0/0x664) from [&lt;c03e89f4&gt;] (host_start+0xf0/0x180)
[&lt;c03e8904&gt;] (host_start+0x0/0x180) from [&lt;c03e7c34&gt;] (ci_hdrc_probe+0x360/0x670
)
 r6:df2ef410 r5:00000000 r4:df2c3010 r3:c03e8904
[&lt;c03e78d4&gt;] (ci_hdrc_probe+0x0/0x670) from [&lt;c0311044&gt;] (platform_drv_probe+0x20/0x24)
[&lt;c0311024&gt;] (platform_drv_probe+0x0/0x24) from [&lt;c030fcac&gt;] (driver_probe_device+0x9c/0x234)
...
---[ end trace c88ccaf3969e8422 ]---
Unable to handle kernel NULL pointer dereference at virtual address 00000028
pgd = c0004000
[00000028] *pgd=00000000
Internal error: Oops: 17 [#1] SMP ARM
Modules linked in:
CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G        W    3.12.0-rc4+ #56
Workqueue: deferwq deferred_probe_work_func
task: df86ad00 ti: df882000 task.ti: df882000
PC is at usb_remove_hcd+0x10/0x150
LR is at host_stop+0x1c/0x3c
pc : [&lt;c03cacec&gt;]    lr : [&lt;c03e88e4&gt;]    psr: 60000013
sp : df883b50  ip : df883b78  fp : df883b74
r10: c11f4c54  r9 : c0836450  r8 : df30c400
r7 : fffffff4  r6 : df2ef410  r5 : 00000000  r4 : df2c3010
r3 : 00000000  r2 : 00000000  r1 : df86b0a0  r0 : 00000000
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 2f29404a  DAC: 00000015
Process kworker/u2:0 (pid: 6, stack limit = 0xdf882240)
Stack: (0xdf883b50 to 0xdf884000)
...
Backtrace:
[&lt;c03cacdc&gt;] (usb_remove_hcd+0x0/0x150) from [&lt;c03e88e4&gt;] (host_stop+0x1c/0x3c)
 r6:df2ef410 r5:00000000 r4:df2c3010
[&lt;c03e88c8&gt;] (host_stop+0x0/0x3c) from [&lt;c03e8aa0&gt;] (ci_hdrc_host_destroy+0x1c/0x20)
 r5:00000000 r4:df2c3010
[&lt;c03e8a84&gt;] (ci_hdrc_host_destroy+0x0/0x20) from [&lt;c03e7c80&gt;] (ci_hdrc_probe+0x3ac/0x670)
[&lt;c03e78d4&gt;] (ci_hdrc_probe+0x0/0x670) from [&lt;c0311044&gt;] (platform_drv_probe+0x20/0x24)
[&lt;c0311024&gt;] (platform_drv_probe+0x0/0x24) from [&lt;c030fcac&gt;] (driver_probe_device+0x9c/0x234)
[&lt;c030fc10&gt;] (driver_probe_device+0x0/0x234) from [&lt;c030ff28&gt;] (__device_attach+0x44/0x48)
...
---[ end trace c88ccaf3969e8423 ]---

Fix this so at least we can continue booting and get to a shell prompt.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&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>
When CMA fails to initialize in v3.12-rc4, the chipidea driver oopses
the kernel while trying to remove and put the HCD which doesn't exist:

WARNING: CPU: 0 PID: 6 at /home/rmk/git/linux-rmk/arch/arm/mm/dma-mapping.c:511
__dma_alloc+0x200/0x240()
coherent pool not initialised!
Modules linked in:
CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G        W    3.12.0-rc4+ #56
Workqueue: deferwq deferred_probe_work_func
Backtrace:
[&lt;c001218c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c0012328&gt;] (show_stack+0x18/0x1c)
 r6:c05fd9cc r5:000001ff r4:00000000 r3:df86ad00
[&lt;c0012310&gt;] (show_stack+0x0/0x1c) from [&lt;c05f3a4c&gt;] (dump_stack+0x70/0x8c)
[&lt;c05f39dc&gt;] (dump_stack+0x0/0x8c) from [&lt;c00230a8&gt;] (warn_slowpath_common+0x6c/0x8c)
 r4:df883a60 r3:df86ad00
[&lt;c002303c&gt;] (warn_slowpath_common+0x0/0x8c) from [&lt;c002316c&gt;] (warn_slowpath_fmt+0x38/0x40)
 r8:ffffffff r7:00001000 r6:c083b808 r5:00000000 r4:df2efe80
[&lt;c0023134&gt;] (warn_slowpath_fmt+0x0/0x40) from [&lt;c00196bc&gt;] (__dma_alloc+0x200/0x240)
 r3:00000000 r2:c05fda00
[&lt;c00194bc&gt;] (__dma_alloc+0x0/0x240) from [&lt;c001982c&gt;] (arm_dma_alloc+0x88/0xa0)
[&lt;c00197a4&gt;] (arm_dma_alloc+0x0/0xa0) from [&lt;c03e2904&gt;] (ehci_setup+0x1f4/0x438)
[&lt;c03e2710&gt;] (ehci_setup+0x0/0x438) from [&lt;c03cbd60&gt;] (usb_add_hcd+0x18c/0x664)
[&lt;c03cbbd4&gt;] (usb_add_hcd+0x0/0x664) from [&lt;c03e89f4&gt;] (host_start+0xf0/0x180)
[&lt;c03e8904&gt;] (host_start+0x0/0x180) from [&lt;c03e7c34&gt;] (ci_hdrc_probe+0x360/0x670
)
 r6:df2ef410 r5:00000000 r4:df2c3010 r3:c03e8904
[&lt;c03e78d4&gt;] (ci_hdrc_probe+0x0/0x670) from [&lt;c0311044&gt;] (platform_drv_probe+0x20/0x24)
[&lt;c0311024&gt;] (platform_drv_probe+0x0/0x24) from [&lt;c030fcac&gt;] (driver_probe_device+0x9c/0x234)
...
---[ end trace c88ccaf3969e8422 ]---
Unable to handle kernel NULL pointer dereference at virtual address 00000028
pgd = c0004000
[00000028] *pgd=00000000
Internal error: Oops: 17 [#1] SMP ARM
Modules linked in:
CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G        W    3.12.0-rc4+ #56
Workqueue: deferwq deferred_probe_work_func
task: df86ad00 ti: df882000 task.ti: df882000
PC is at usb_remove_hcd+0x10/0x150
LR is at host_stop+0x1c/0x3c
pc : [&lt;c03cacec&gt;]    lr : [&lt;c03e88e4&gt;]    psr: 60000013
sp : df883b50  ip : df883b78  fp : df883b74
r10: c11f4c54  r9 : c0836450  r8 : df30c400
r7 : fffffff4  r6 : df2ef410  r5 : 00000000  r4 : df2c3010
r3 : 00000000  r2 : 00000000  r1 : df86b0a0  r0 : 00000000
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 2f29404a  DAC: 00000015
Process kworker/u2:0 (pid: 6, stack limit = 0xdf882240)
Stack: (0xdf883b50 to 0xdf884000)
...
Backtrace:
[&lt;c03cacdc&gt;] (usb_remove_hcd+0x0/0x150) from [&lt;c03e88e4&gt;] (host_stop+0x1c/0x3c)
 r6:df2ef410 r5:00000000 r4:df2c3010
[&lt;c03e88c8&gt;] (host_stop+0x0/0x3c) from [&lt;c03e8aa0&gt;] (ci_hdrc_host_destroy+0x1c/0x20)
 r5:00000000 r4:df2c3010
[&lt;c03e8a84&gt;] (ci_hdrc_host_destroy+0x0/0x20) from [&lt;c03e7c80&gt;] (ci_hdrc_probe+0x3ac/0x670)
[&lt;c03e78d4&gt;] (ci_hdrc_probe+0x0/0x670) from [&lt;c0311044&gt;] (platform_drv_probe+0x20/0x24)
[&lt;c0311024&gt;] (platform_drv_probe+0x0/0x24) from [&lt;c030fcac&gt;] (driver_probe_device+0x9c/0x234)
[&lt;c030fc10&gt;] (driver_probe_device+0x0/0x234) from [&lt;c030ff28&gt;] (__device_attach+0x44/0x48)
...
---[ end trace c88ccaf3969e8423 ]---

Fix this so at least we can continue booting and get to a shell prompt.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: udc: Fix calling spin_lock_irqsave at sleep context</title>
<updated>2013-10-11T23:25:15+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2013-10-08T02:30:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=65b2fb32b5ce53e103e026b6f95b784c5921cd2e'/>
<id>65b2fb32b5ce53e103e026b6f95b784c5921cd2e</id>
<content type='text'>
Fixing the below dump:

root@freescale ~$ modprobe g_serial
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
BUG: sleeping function called from invalid context at /home/b29397/work/projects/upstream/usb/usb/drivers/base/power/runtime.c:952
in_atomic(): 1, irqs_disabled(): 128, pid: 805, name: modprobe
2 locks held by modprobe/805:
 #0:  (udc_lock){+.+.+.}, at: [&lt;7f000a74&gt;] usb_gadget_probe_driver+0x44/0xb4 [udc_core]
 #1:  (&amp;(&amp;ci-&gt;lock)-&gt;rlock){......}, at: [&lt;7f033488&gt;] ci_udc_start+0x94/0x110 [ci_hdrc]
irq event stamp: 3878
hardirqs last  enabled at (3877): [&lt;806b6720&gt;] _raw_spin_unlock_irqrestore+0x40/0x6c
hardirqs last disabled at (3878): [&lt;806b6474&gt;] _raw_spin_lock_irqsave+0x2c/0xa8
softirqs last  enabled at (3872): [&lt;8002ec0c&gt;] __do_softirq+0x1c8/0x2e8
softirqs last disabled at (3857): [&lt;8002f180&gt;] irq_exit+0xbc/0x110
CPU: 0 PID: 805 Comm: modprobe Not tainted 3.11.0-next-20130910+ #85
[&lt;80016b94&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;80012e0c&gt;] (show_stack+0x20/0x24)
[&lt;80012e0c&gt;] (show_stack+0x20/0x24) from [&lt;806af554&gt;] (dump_stack+0x9c/0xc4)
[&lt;806af554&gt;] (dump_stack+0x9c/0xc4) from [&lt;8005940c&gt;] (__might_sleep+0xf4/0x134)
[&lt;8005940c&gt;] (__might_sleep+0xf4/0x134) from [&lt;803a04a4&gt;] (__pm_runtime_resume+0x94/0xa0)
[&lt;803a04a4&gt;] (__pm_runtime_resume+0x94/0xa0) from [&lt;7f0334a4&gt;] (ci_udc_start+0xb0/0x110 [ci_hdrc])
[&lt;7f0334a4&gt;] (ci_udc_start+0xb0/0x110 [ci_hdrc]) from [&lt;7f0009b4&gt;] (udc_bind_to_driver+0x5c/0xd8 [udc_core])
[&lt;7f0009b4&gt;] (udc_bind_to_driver+0x5c/0xd8 [udc_core]) from [&lt;7f000ab0&gt;] (usb_gadget_probe_driver+0x80/0xb4 [udc_core])
[&lt;7f000ab0&gt;] (usb_gadget_probe_driver+0x80/0xb4 [udc_core]) from [&lt;7f008618&gt;] (usb_composite_probe+0xac/0xd8 [libcomposite])
[&lt;7f008618&gt;] (usb_composite_probe+0xac/0xd8 [libcomposite]) from [&lt;7f04b168&gt;] (init+0x8c/0xb4 [g_serial])
[&lt;7f04b168&gt;] (init+0x8c/0xb4 [g_serial]) from [&lt;800088e8&gt;] (do_one_initcall+0x108/0x16c)
[&lt;800088e8&gt;] (do_one_initcall+0x108/0x16c) from [&lt;8008e518&gt;] (load_module+0x1b00/0x20a4)
[&lt;8008e518&gt;] (load_module+0x1b00/0x20a4) from [&lt;8008eba8&gt;] (SyS_init_module+0xec/0x100)
[&lt;8008eba8&gt;] (SyS_init_module+0xec/0x100) from [&lt;8000ec40&gt;] (ret_fast_syscall+0x0/0x48)

Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
Fixing the below dump:

root@freescale ~$ modprobe g_serial
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
BUG: sleeping function called from invalid context at /home/b29397/work/projects/upstream/usb/usb/drivers/base/power/runtime.c:952
in_atomic(): 1, irqs_disabled(): 128, pid: 805, name: modprobe
2 locks held by modprobe/805:
 #0:  (udc_lock){+.+.+.}, at: [&lt;7f000a74&gt;] usb_gadget_probe_driver+0x44/0xb4 [udc_core]
 #1:  (&amp;(&amp;ci-&gt;lock)-&gt;rlock){......}, at: [&lt;7f033488&gt;] ci_udc_start+0x94/0x110 [ci_hdrc]
irq event stamp: 3878
hardirqs last  enabled at (3877): [&lt;806b6720&gt;] _raw_spin_unlock_irqrestore+0x40/0x6c
hardirqs last disabled at (3878): [&lt;806b6474&gt;] _raw_spin_lock_irqsave+0x2c/0xa8
softirqs last  enabled at (3872): [&lt;8002ec0c&gt;] __do_softirq+0x1c8/0x2e8
softirqs last disabled at (3857): [&lt;8002f180&gt;] irq_exit+0xbc/0x110
CPU: 0 PID: 805 Comm: modprobe Not tainted 3.11.0-next-20130910+ #85
[&lt;80016b94&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;80012e0c&gt;] (show_stack+0x20/0x24)
[&lt;80012e0c&gt;] (show_stack+0x20/0x24) from [&lt;806af554&gt;] (dump_stack+0x9c/0xc4)
[&lt;806af554&gt;] (dump_stack+0x9c/0xc4) from [&lt;8005940c&gt;] (__might_sleep+0xf4/0x134)
[&lt;8005940c&gt;] (__might_sleep+0xf4/0x134) from [&lt;803a04a4&gt;] (__pm_runtime_resume+0x94/0xa0)
[&lt;803a04a4&gt;] (__pm_runtime_resume+0x94/0xa0) from [&lt;7f0334a4&gt;] (ci_udc_start+0xb0/0x110 [ci_hdrc])
[&lt;7f0334a4&gt;] (ci_udc_start+0xb0/0x110 [ci_hdrc]) from [&lt;7f0009b4&gt;] (udc_bind_to_driver+0x5c/0xd8 [udc_core])
[&lt;7f0009b4&gt;] (udc_bind_to_driver+0x5c/0xd8 [udc_core]) from [&lt;7f000ab0&gt;] (usb_gadget_probe_driver+0x80/0xb4 [udc_core])
[&lt;7f000ab0&gt;] (usb_gadget_probe_driver+0x80/0xb4 [udc_core]) from [&lt;7f008618&gt;] (usb_composite_probe+0xac/0xd8 [libcomposite])
[&lt;7f008618&gt;] (usb_composite_probe+0xac/0xd8 [libcomposite]) from [&lt;7f04b168&gt;] (init+0x8c/0xb4 [g_serial])
[&lt;7f04b168&gt;] (init+0x8c/0xb4 [g_serial]) from [&lt;800088e8&gt;] (do_one_initcall+0x108/0x16c)
[&lt;800088e8&gt;] (do_one_initcall+0x108/0x16c) from [&lt;8008e518&gt;] (load_module+0x1b00/0x20a4)
[&lt;8008e518&gt;] (load_module+0x1b00/0x20a4) from [&lt;8008eba8&gt;] (SyS_init_module+0xec/0x100)
[&lt;8008eba8&gt;] (SyS_init_module+0xec/0x100) from [&lt;8000ec40&gt;] (ret_fast_syscall+0x0/0x48)

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
