On Sat, Jun 8, 2019 at 10:57 PM Andrey Smirnov <[email protected]> wrote: > > Allocating DMA after registering I2C adapter can lead to infinite > probing loop, for example, consider the following scenario: > > 1. i2c_imx_probe() is called and successfully registers an I2C > adapter via i2c_add_numbered_adapter() > > 2. As a part of i2c_add_numbered_adapter() new I2C slave devices > are added from DT which results in a call to > driver_deferred_probe_trigger() > > 3. i2c_imx_probe() continues and calls i2c_imx_dma_request() which > due to lack of proper DMA driver returns -EPROBE_DEFER > > 4. i2c_imx_probe() fails, removes I2C adapter and returns > -EPROBE_DEFER, which places it into deferred probe list > > 5. Deferred probe work triggered in #2 above kicks in and calls > i2c_imx_probe() again thus bringing us to step #1 > > To avoid having this problem, move i2c_imx_dma_request() to happen > before i2c_add_numbered_adapter(). > > This problem was encountered on VF610 CFU1 board with > CONFIG_FSL_EDMA=n. > > Signed-off-by: Andrey Smirnov <[email protected]> > Cc: Chris Healy <[email protected]> > Cc: Wolfram Sang <[email protected]> > Cc: Fabio Estevam <[email protected]> > Cc: NXP Linux Team <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected]
Gentle ping. Any feedback on this? Thanks, Andrey Smirnov

