On Sat, Jun 8, 2019 at 10:57 PM Andrey Smirnov <andrew.smirnov@xxxxxxxxx> 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 <andrew.smirnov@xxxxxxxxx> > Cc: Chris Healy <cphealy@xxxxxxxxx> > Cc: Wolfram Sang <wsa@xxxxxxxxxxxxx> > Cc: Fabio Estevam <festevam@xxxxxxxxx> > Cc: NXP Linux Team <linux-imx@xxxxxxx> > Cc: linux-i2c@xxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx Gentle ping. Any feedback on this? Thanks, Andrey Smirnov