On 2019-06-14 at 13:35 +0000, Sven Van Asbroeck wrote: > Hi Robin, see comments inline. > > On Fri, Jun 14, 2019 at 4:38 AM <yibin.gong@xxxxxxx> wrote: > > > > > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > > index deea9aa..b5a1ee2 100644 > > --- a/drivers/dma/imx-sdma.c > > +++ b/drivers/dma/imx-sdma.c > > @@ -742,7 +742,7 @@ static int sdma_load_script(struct sdma_engine > > *sdma, void *buf, int size, > > spin_lock_irqsave(&sdma->channel_0_lock, flags); > > > > bd0->mode.command = C0_SETPM; > > - bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; > > + bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD; > I tested this change on its own, and it seemed sufficient to make the > crash > disappear. > > > > > bd0->mode.count = size / 2; > > bd0->buffer_addr = buf_phys; > > bd0->ext_buffer_addr = address; > > @@ -1064,7 +1064,7 @@ static int sdma_load_context(struct > > sdma_channel *sdmac) > > context->gReg[7] = sdmac->watermark_level; > > > > bd0->mode.command = C0_SETDM; > > - bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; > > + bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD; > This function isn't part of the firmware load path, so how can it be > related > to fixing the firmware crash? Yes, that's not in your firmware load case, but I want to keep the same behavior for all channel0 conditions, don't worry, harmless here. > > If this is an unrelated efficiency saving, maybe it should go into > its > own patch? > Maybe we want bugfix patches to be as small and specific as possible, > so they > can more easily be backported to older kernels? > > > > > bd0->mode.count = sizeof(*context) / 4; > > bd0->buffer_addr = sdma->context_phys; > > bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * > > channel; > > -- > > 2.7.4 > >