• J
    drivers/tty: amba: defer DMA probe until the DMA channel is required. · 1c9be310
    Jorge Ramirez-Ortiz 提交于
    Fix a race condition that happens when device_initcall(pl011_dma_initicall)
    is executed before all the devices have been probed - this issue was observed on
    a hisi_6220 SoC (HiKey board from Linaro).
    
    The deferred driver probing framework relies on late_initcall to trigger
    deferred probes so it is just possible that, even with a valid DMA driver ready
    to be loaded, we fail to synchronize with it.
    
    The proposed implementation delays probing the DMA until dma_startup.
    
    As this is invoked on port startup and port resume - but DMA probing is only
    required once - we avoid calling multiple times using a new field in
    uart_amba_port to track this scenario.
    
    This commit allows for subsequent attempts to associate an external DMA if the
    DMA driver itself is not available (but present in the deferred probe pending
    list).
    Signed-off-by: NJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
    Reviewed-by: NRob Herring <robh@kernel.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1c9be310
amba-pl011.c 60.4 KB