• Dan Williams's avatar
    async_tx: deprecate broken support for channel switching · b802c841
    Dan Williams authored
    Back in 2011, Russell pointed out that the "async_tx channel switch"
    capability was violating expectations of the dma mapping api [1]. At the
    time the existing uses were reviewed as still usable, but that longer
    term we needed a rework of the raid offload implementation. While some
    of the framework for a fixed implementation was introduced in 2012 [2],
    the wider rewrite never materialized.
    
    There continues to be interest in raid offload with new dma/raid engine
    drivers being submitted. Those drivers must not build on top of the
    broken channel switching capability.
    
    Prevent async_tx from using an offload engine if the channel switching
    capability is enabled. This still allows the engine to be used for other
    purposes, but the broken way async_tx uses these engines for raid will
    be disabled. For configurations where this causes a performance
    regression the only solution is to start the work of eliminating the
    async_tx api and moving channel management into the raid code directly
    where it can manage marshalling an operation stream between multiple dma
    channels.
    
    [1]: http://lists.infradead.org/pipermail/linux-arm-kernel/2011-January/036753.html
    [2]: https://lkml.org/lkml/2012/12/6/71
    
    Cc: Anatolij Gustschin <agust@denx.de>
    Cc: Anup Patel <anup.patel@broadcom.com>
    Cc: Rameshwar Prasad Sahu <rsahu@apm.com>
    Cc: Saeed Bishara <saeed.bishara@gmail.com>
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reported-by: default avatarRussell King <linux@armlinux.org.uk>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    b802c841
async_tx.h 6.81 KB