• Kuninori Morimoto's avatar
    dmaengine: rcar-dmac: use list_add() on rcar_dmac_desc_put() · 3565fe53
    Kuninori Morimoto authored
    For each descriptor, in addition to the memory used by the descriptors
    structure itself, the driver allocates a list of chunks as well as a
    buffer for hardware descriptors. Descriptors themselves are preallocated,
    and allocation of the chunks and buffer is performed the first time the
    descriptor is used. The memory isn't freed when the transfer is completed,
    as the chunks and buffer will be needed again when the descriptor is
    reused internally, so the driver keeps the memory around.
    
    If only a few descriptors are used concurrently, the current
    list_add_tail() implementation will result in all preallocated descriptors
    being used before going back to the first one, and will thus allocate
    chunks and a buffer for all preallocated descriptors. Using list_add()
    will put the complete descriptor at the head of the list of available
    descriptors, so the next transfer will be more likely to reuse a
    descriptor that already has associated memory instead of one that has
    never been used before.
    Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    3565fe53
rcar-dmac.c 47.4 KB