On Fri, Jul 05, 2024 at 07:25:32PM +0530, Mrinmay Sarkar wrote: Subject should be, dmaengine: dw-edma: Fix unmasking STOP and ABORT interrupts for HDMA > The current logic is enabling both STOP_INT_MASK and ABORT_INT_MASK > bit. This is apparently masking those particular interrupt rather than s/interrupt/interrupts > unmasking the same. > Please add the implications of this issue. I guess if the interrupts are masked, they would never get triggered. > This change will reset STOP_INT_MASK and ABORT_INT_MASK bit and unmask > these interrupts. > How about, So fix the issue by unmasking the STOP and ABORT interrupts properly. > Signed-off-by: Mrinmay Sarkar <quic_msarkar@xxxxxxxxxxx> Please add fixes tag and CC stable as this is a potential bug fix. > --- > drivers/dma/dw-edma/dw-hdma-v0-core.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/dma/dw-edma/dw-hdma-v0-core.c b/drivers/dma/dw-edma/dw-hdma-v0-core.c > index 10e8f07..88bd652f 100644 > --- a/drivers/dma/dw-edma/dw-hdma-v0-core.c > +++ b/drivers/dma/dw-edma/dw-hdma-v0-core.c > @@ -247,10 +247,11 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) > if (first) { > /* Enable engine */ > SET_CH_32(dw, chan->dir, chan->id, ch_en, BIT(0)); > - /* Interrupt enable&unmask - done, abort */ > - tmp = GET_CH_32(dw, chan->dir, chan->id, int_setup) | > - HDMA_V0_STOP_INT_MASK | HDMA_V0_ABORT_INT_MASK | > - HDMA_V0_LOCAL_STOP_INT_EN | HDMA_V0_LOCAL_ABORT_INT_EN; > + /* Interrupt unmask - done, abort */ There is no done interrupt in HDMA, only STOP. So use STOP, ABORT here and below. - Mani -- மணிவண்ணன் சதாசிவம்