Message ID | 20200824120108.9178-1-peter.ujfalusi@ti.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg | expand |
Vinod, On 24/08/2020 15.01, Peter Ujfalusi wrote: > The TR which needs to be initialized for the next sg entry is indexed by > tr_idx and not by the running i counter. > > In case any sub element in the SG needs more than one TR, the code would > corrupt an already configured TR. I forgot to add the Fixes tag: Fixes: 6cf668a4ef829 ("dmaengine: ti: k3-udma: Use the TR counter helper for slave_sg and cyclic") Can you add it or I can resend with the tag. > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > --- > drivers/dma/ti/k3-udma.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c > index c14e6cb105cd..30cb514cee54 100644 > --- a/drivers/dma/ti/k3-udma.c > +++ b/drivers/dma/ti/k3-udma.c > @@ -2059,9 +2059,9 @@ udma_prep_slave_sg_tr(struct udma_chan *uc, struct scatterlist *sgl, > return NULL; > } > > - cppi5_tr_init(&tr_req[i].flags, CPPI5_TR_TYPE1, false, false, > - CPPI5_TR_EVENT_SIZE_COMPLETION, 0); > - cppi5_tr_csf_set(&tr_req[i].flags, CPPI5_TR_CSF_SUPR_EVT); > + cppi5_tr_init(&tr_req[tr_idx].flags, CPPI5_TR_TYPE1, false, > + false, CPPI5_TR_EVENT_SIZE_COMPLETION, 0); > + cppi5_tr_csf_set(&tr_req[tr_idx].flags, CPPI5_TR_CSF_SUPR_EVT); > > tr_req[tr_idx].addr = sg_addr; > tr_req[tr_idx].icnt0 = tr0_cnt0; > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
On 25-08-20, 08:34, Peter Ujfalusi wrote: > Vinod, > > On 24/08/2020 15.01, Peter Ujfalusi wrote: > > The TR which needs to be initialized for the next sg entry is indexed by > > tr_idx and not by the running i counter. > > > > In case any sub element in the SG needs more than one TR, the code would > > corrupt an already configured TR. > > I forgot to add the Fixes tag: > Fixes: 6cf668a4ef829 ("dmaengine: ti: k3-udma: Use the TR counter helper for slave_sg and cyclic") > > Can you add it or I can resend with the tag. Applied with fixes line, thanks
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index c14e6cb105cd..30cb514cee54 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -2059,9 +2059,9 @@ udma_prep_slave_sg_tr(struct udma_chan *uc, struct scatterlist *sgl, return NULL; } - cppi5_tr_init(&tr_req[i].flags, CPPI5_TR_TYPE1, false, false, - CPPI5_TR_EVENT_SIZE_COMPLETION, 0); - cppi5_tr_csf_set(&tr_req[i].flags, CPPI5_TR_CSF_SUPR_EVT); + cppi5_tr_init(&tr_req[tr_idx].flags, CPPI5_TR_TYPE1, false, + false, CPPI5_TR_EVENT_SIZE_COMPLETION, 0); + cppi5_tr_csf_set(&tr_req[tr_idx].flags, CPPI5_TR_CSF_SUPR_EVT); tr_req[tr_idx].addr = sg_addr; tr_req[tr_idx].icnt0 = tr0_cnt0;
The TR which needs to be initialized for the next sg entry is indexed by tr_idx and not by the running i counter. In case any sub element in the SG needs more than one TR, the code would corrupt an already configured TR. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> --- drivers/dma/ti/k3-udma.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)