• A
    dmaengine: pl330: Correct device assignment. · cee42392
    Andrew Jackson 提交于
    Commit f6f2421c removed pl330_info structure by embedding it into
    pl330_dmac structure, but did not ensure that the dmac->ddma.dev
    pointer gets initialised before use. When dma_alloc_coherent() gets
    called on arm64 a WARN() gets triggered due to dev being NULL.
    
    ------------[ cut here ]------------
    WARNING: CPU: 1 PID: 1 at arch/arm64/mm/dma-mapping.c:49 __dma_alloc_coherent+0xd0/0xe0()
    Use an actual device structure for DMA allocation
    Modules linked in:
    CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.17.0+ #5
    Call trace:
    [<ffffffc000087f24>] dump_backtrace+0x0/0x130
    [<ffffffc000088064>] show_stack+0x10/0x1c
    [<ffffffc0004e8af8>] dump_stack+0x74/0xb8
    [<ffffffc0000aa444>] warn_slowpath_common+0x8c/0xb4
    [<ffffffc0000aa4b8>] warn_slowpath_fmt+0x4c/0x58
    [<ffffffc000092580>] __dma_alloc_coherent+0xcc/0xe0
    [<ffffffc000092734>] __dma_alloc_noncoherent+0x64/0x158
    [<ffffffc000312cd8>] pl330_probe+0x650/0x8f0
    [<ffffffc00030e1d4>] amba_probe+0xa0/0xc8
    [<ffffffc000350240>] really_probe+0xc4/0x22c
    [<ffffffc0003504b4>] __driver_attach+0xa0/0xa8
    [<ffffffc00034e5fc>] bus_for_each_dev+0x54/0x98
    [<ffffffc00034fd8c>] driver_attach+0x1c/0x28
    [<ffffffc00034fa08>] bus_add_driver+0x14c/0x204
    [<ffffffc000350b84>] driver_register+0x64/0x130
    [<ffffffc00030dcf8>] amba_driver_register+0x50/0x5c
    [<ffffffc0006a60d0>] pl330_driver_init+0x10/0x1c
    [<ffffffc0000814ac>] do_one_initcall+0x88/0x19c
    [<ffffffc00068dab8>] kernel_init_freeable+0x140/0x1e0
    [<ffffffc0004e5e18>] kernel_init+0x10/0xd4
    ---[ end trace 76f2d47a444e523e ]---
    (NULL device *): dmac_alloc_resources:1821 Can't allocate memory!
    (NULL device *): Unable to create channels for DMAC
    
    This patch will also ensure that any dev_err messages are printed
    with the appropriate device name.
    Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
    Signed-off-by: NAndrew Jackson <Andrew.Jackson@arm.com>
    Signed-off-by: NVinod Koul <vinod.koul@intel.com>
    cee42392
pl330.c 61.5 KB