OpenCloudOS-Kernel/drivers/usb/musb
Sebastian Andrzej Siewior f042e9cbae usb: musb: musb_dsps: fix NULL pointer in suspend
So testing managed to configure musb in DMA mode but not load the
matching cppi41 driver for DMA. This results in

|musb-hdrc musb-hdrc.0.auto: Failed to request rx1.
|musb-hdrc musb-hdrc.0.auto: musb_init_controller failed with status -517
|platform musb-hdrc.0.auto: Driver musb-hdrc requests probe deferral

which is "okay". Once the driver is loaded we re-try probing and
everyone is happy. Until then if you try suspend say
    echo mem > /sys/power/state
then you go boom

|Unable to handle kernel NULL pointer dereference at virtual address 000003a4
|pgd = cf50c000
|[000003a4] *pgd=8f6a3831, *pte=00000000, *ppte=00000000
|Internal error: Oops: 17 [#1] ARM
|PC is at dsps_suspend+0x18/0x9c [musb_dsps]
|LR is at dsps_suspend+0x18/0x9c [musb_dsps]
|pc : [<bf08e268>] lr : [<bf08e268>] psr: a0000013
|sp : cbd97e00 ip : c0af4394 fp : 00000000
|r10: c0831d90 r9 : 00000002 r8 : cf6da410
|r7 : c03ba4dc r6 : bf08f224 r5 : 00000000 r4 : cbc5fcd0
|r3 : bf08e250 r2 : bf08f264 r1 : cf6da410 r0 : 00000000
|[<bf08e268>] (dsps_suspend [musb_dsps]) from [<c03ba508>] (platform_pm_suspend+0x2c/0x54)
|Code: e1a04000 e9900041 e2800010 eb4caa8e (e59053a4)

because platform_get_drvdata(glue->musb) returns a NULL pointer as long as the
device is not fully probed.

Tested-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2014-10-23 09:55:43 -05:00
..
Kconfig usb: musb: omap2plus bus glue needs USB host support 2014-05-14 09:23:32 -05:00
Makefile usb: musb: add support for JZ4740 usb device controller 2013-12-20 09:53:24 -06:00
am35x.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
blackfin.c usb: musb: backfin: Introduce the use of the managed version of kzalloc 2014-06-30 12:26:57 -05:00
blackfin.h usb: musb: drop a gigantic amount of ifdeferry 2011-07-01 14:31:10 -07:00
cppi_dma.c usb: musb: dma: merge ->start/stop into create/destroy 2013-07-29 13:53:18 +03:00
cppi_dma.h
da8xx.c usb: phy: generic: allow multiples calls to usb_phy_generic_register() 2014-04-21 14:07:25 -05:00
davinci.c usb: musb: davinci: use devm_ functions. 2014-06-30 12:26:48 -05:00
davinci.h usb: musb: davinci: Fix build breakage 2012-06-04 18:29:42 +03:00
jz4740.c usb: musb: register nop transceiver driver for jz4740 2014-07-10 08:36:50 -05:00
musb_am335x.c usb: musb: Fix panic upon musb_am335x module removal 2014-06-27 10:53:06 -05:00
musb_core.c usb: musb: core: Convert the musb_platform_reset to have a return value. 2014-07-16 09:59:58 -05:00
musb_core.h usb: musb: core: Convert the musb_platform_reset to have a return value. 2014-07-16 09:59:58 -05:00
musb_cppi41.c usb: musb: cppi41: restart hrtimer only if not yet done 2014-10-23 09:55:41 -05:00
musb_debug.h usb: musb: remove extern qualifier from musb_debug.h header 2011-12-21 13:21:02 +02:00
musb_debugfs.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
musb_dma.h usb: musb: introduce dma_channel.rx_packet_done 2014-06-30 14:26:24 -05:00
musb_dsps.c usb: musb: musb_dsps: fix NULL pointer in suspend 2014-10-23 09:55:43 -05:00
musb_gadget.c usb: gadget: Refactor request completion 2014-09-25 16:58:50 +02:00
musb_gadget.h usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes 2013-05-28 19:22:23 +03:00
musb_gadget_ep0.c usb: musb: gadget: read ep0 fifo only if rxcount is non zero 2013-04-02 11:42:50 +03:00
musb_host.c usb: musb: fix wrong indentation in musb_host.c 2014-06-30 14:26:27 -05:00
musb_host.h usb: musb: fix prototype for musb_port_reset 2013-12-20 15:05:43 -06:00
musb_io.h usb: musb: use io{read,write}*_rep accessors 2012-12-17 17:15:13 -08:00
musb_regs.h usb: Fixed a few typos 2014-09-23 22:15:18 -07:00
musb_virthub.c usb: musb: correct use of schedule_delayed_work() 2014-02-20 09:17:24 -06:00
musbhsdma.c usb: musb: dma: merge ->start/stop into create/destroy 2013-07-29 13:53:18 +03:00
musbhsdma.h usb: musb: remove generic_interrupt 2012-11-06 15:32:13 +02:00
omap2430.c usb: musb: omap2430: make sure clocks are enabled when running mailbox 2014-04-15 12:08:02 -05:00
omap2430.h usb: start using the control module driver 2013-01-25 12:27:24 +02:00
tusb6010.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
tusb6010.h usb: musb: tusb6010: Use musb->tusb_revision instead of tusb_get_revision call. 2014-05-16 12:16:31 -05:00
tusb6010_omap.c usb: musb: tusb6010: Use musb->tusb_revision instead of tusb_get_revision call. 2014-05-16 12:16:31 -05:00
ux500.c usb: patches for v3.17 merge window 2014-07-21 11:33:41 -07:00
ux500_dma.c usb: musb: ux500: fix decimal printf format specifiers prefixed with 0x 2014-08-19 09:24:45 -05:00