* [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
@ 2024-11-28 5:01 Maxim Kochetkov via buildroot
2024-11-28 5:15 ` Baruch Siach via buildroot
0 siblings, 1 reply; 3+ messages in thread
From: Maxim Kochetkov via buildroot @ 2024-11-28 5:01 UTC (permalink / raw)
To: buildroot; +Cc: Maxim Kochetkov
axi_rw_burst_len allowed values range is 1..256. Then this value
goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
leads to overflow and overwrites another fields in LLI. More over
ARLEN/AWLEN are zero based (0 - 1, 256 - 255).
Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
---
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
index b23536645ff7..9aa79e9b49ca 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -1437,7 +1437,7 @@ static int parse_device_properties(struct axi_dma_chip *chip)
return -EINVAL;
chip->dw->hdata->restrict_axi_burst_len = true;
- chip->dw->hdata->axi_rw_burst_len = tmp;
+ chip->dw->hdata->axi_rw_burst_len = tmp - 1;
}
return 0;
@@ -1550,7 +1550,7 @@ static int dw_probe(struct platform_device *pdev)
dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
/* DMA capabilities */
- dw->dma.max_burst = hdata->axi_rw_burst_len;
+ dw->dma.max_burst = hdata->axi_rw_burst_len + 1;
dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.directions = BIT(DMA_MEM_TO_MEM);
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
2024-11-28 5:01 [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings Maxim Kochetkov via buildroot
@ 2024-11-28 5:15 ` Baruch Siach via buildroot
2024-11-28 6:08 ` Maxim Kochetkov via buildroot
0 siblings, 1 reply; 3+ messages in thread
From: Baruch Siach via buildroot @ 2024-11-28 5:15 UTC (permalink / raw)
To: Maxim Kochetkov via buildroot; +Cc: Maxim Kochetkov
Hi Maxim,
On Thu, Nov 28 2024, Maxim Kochetkov via buildroot wrote:
> axi_rw_burst_len allowed values range is 1..256. Then this value
> goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
> leads to overflow and overwrites another fields in LLI. More over
> ARLEN/AWLEN are zero based (0 - 1, 256 - 255).
>
> Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
> Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
This is the wrong list for this patch, I believe.
baruch
> ---
> drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> index b23536645ff7..9aa79e9b49ca 100644
> --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> @@ -1437,7 +1437,7 @@ static int parse_device_properties(struct axi_dma_chip *chip)
> return -EINVAL;
>
> chip->dw->hdata->restrict_axi_burst_len = true;
> - chip->dw->hdata->axi_rw_burst_len = tmp;
> + chip->dw->hdata->axi_rw_burst_len = tmp - 1;
> }
>
> return 0;
> @@ -1550,7 +1550,7 @@ static int dw_probe(struct platform_device *pdev)
> dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
>
> /* DMA capabilities */
> - dw->dma.max_burst = hdata->axi_rw_burst_len;
> + dw->dma.max_burst = hdata->axi_rw_burst_len + 1;
> dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
> dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
> dw->dma.directions = BIT(DMA_MEM_TO_MEM);
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
2024-11-28 5:15 ` Baruch Siach via buildroot
@ 2024-11-28 6:08 ` Maxim Kochetkov via buildroot
0 siblings, 0 replies; 3+ messages in thread
From: Maxim Kochetkov via buildroot @ 2024-11-28 6:08 UTC (permalink / raw)
To: buildroot
28.11.2024 08:15, Baruch Siach via buildroot wrote:
> Hi Maxim,
>
> On Thu, Nov 28 2024, Maxim Kochetkov via buildroot wrote:
>> axi_rw_burst_len allowed values range is 1..256. Then this value
>> goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
>> leads to overflow and overwrites another fields in LLI. More over
>> ARLEN/AWLEN are zero based (0 - 1, 256 - 255).
>>
>> Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
>> Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
>
> This is the wrong list for this patch, I believe.
Yep. Sorry about that. That was miss click.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-28 6:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-28 5:01 [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings Maxim Kochetkov via buildroot
2024-11-28 5:15 ` Baruch Siach via buildroot
2024-11-28 6:08 ` Maxim Kochetkov via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox