• Timur Tabi's avatar
    fsldma: remove internal self-test from Freescale Elo DMA driver · 59f647c2
    Timur Tabi authored
    The Freescale Elo DMA driver runs an internal self-test before registering
    the channels with the DMA engine.  This self-test has a fundemental flaw in
    that it calls the DMA engine's callback functions directly before the
    registration.  However, the registration initializes some variables that the
    callback functions uses, namely the device struct.
    
    The code works today because there are two device structs: the one created
    by the DMA engine, and one created by the Open Firmware (OF) subsystem.  The
    self-test currently uses the device struct created by OF.  However, in the
    future, some of the device structs created by OF will be eliminated.
    This means that the self-test will only have access to the device struct
    created by the DMA engine.  But this device struct isn't initialized when
    the self-test runs, and this causes a kernel panic.
    
    Since there is already a DMA test module (dmatest), the internal self-test
    code is not useful anyway.  It is extremely unlikely that the test will fail
    in normal usage.  It may have been helpful during development, but not any more.
    
    Cc: Kumar Gala <galak@kernel.crashing.org>
    Cc: Li Yang <leoli@freescale.com>
    Cc: Scott Wood <scottwood@freescale.com>
    Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    59f647c2
fsldma.c 26.6 KB