Messages in this thread | | | Date | Thu, 28 Mar 2024 01:23:13 +0100 | From | Miquel Raynal <> | Subject | Re: [PATCH 2/3] dmaengine: xilinx: xdma: Fix synchronization issue |
| |
Hi Lizhi,
> > @@ -376,6 +378,8 @@ static int xdma_xfer_start(struct xdma_chan *xchan) > > return ret; > > > xchan->busy = true; > > + xchan->stop_requested = false; > > + reinit_completion(&xchan->last_interrupt); > > If stop_requested is true, it should not start another transfer. So I would suggest to add > > if (xchan->stop_requested) > > return -ENODEV;
Maybe -EBUSY in this case?
I thought synchronize() was mandatory in-between. If that's not the case then indeed we need to block or error-out if a new transfer gets started.
> > at the beginning of xdma_xfer_start(). > > xdma_xfer_start() is protected by chan lock. > > > > return 0; > > }
Thanks, Miquèl
| |