dmaengine pl08x dt crash

Johannes Stezenbach js at sig21.net
Wed Mar 23 08:40:49 PDT 2016


Hi,

I'm trying to use the new devicetree support for pl08x
added in commit aa4734da667442
(dmaengine: pl08x: support dt channel assignment).

It causes crash in the pl011 serial driver when it calls
dma_chan_name() because the dma_chan->dev->device is NULL.
I think the reason is dma_async_device_register() is called
during pl08x_probe(), but at this time the number of slave
channels is still 0 as these get allocated later in
pl08x_of_xlate() when clients request the channels.

[    0.420835] pl08xdmac dma8ch0: initialized 8 virtual memcpy channels
[    0.427380] pl08xdmac dma8ch0: initialized 0 virtual slave channels
[    0.436185] pl08xdmac dma8ch0: DMA: PL080s rev1 at 0xfec00000 irq 8
...
[    1.268140] Unable to handle kernel NULL pointer dereference at virtual address 00000034
...
[    1.306397] PC is at pl011_dma_probe+0x114/0x31c
[    1.311018] LR is at pl011_dma_probe+0x104/0x31c
...
[    1.630388] Backtrace:
[    1.632856] [<c01f1784>] (pl011_dma_probe) from [<c01f2cd4>] (pl011_startup+0xd4/0x2b8)
[    1.640856]  r7:00000000 r6:c78b3610 r5:00000000 r4:c78b3610
[    1.646559] [<c01f2c00>] (pl011_startup) from [<c01ef5bc>] (uart_startup.part.3+0x84/0x164)
[    1.654905]  r8:00000000 r7:00000000 r6:c78b3610 r5:c7b09400 r4:c78172e0 r3:c01f2c00
[    1.662701] [<c01ef538>] (uart_startup.part.3) from [<c01ef7c4>] (uart_open+0x128/0x16c)
[    1.670787]  r8:c786da00 r7:c7817358 r6:00000000 r5:c7b09400 r4:c78172e0 r3:00000000
[    1.678583] [<c01ef69c>] (uart_open) from [<c01e32a0>] (tty_open+0x338/0x550)


Johannes



More information about the linux-arm-kernel mailing list