2023-05-21 10:47:19

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 0/5] dma: don't set chancnt

I'm patching dw-axi-dmac to add more features, but I found a small
clean up point and some drivers in drivers/dma/ have the same issue,
so this series comes.

The dma framework will calculate the dma channels chancnt, setting it
is wrong.

NOTE: I leave drivers/dma/ioat/ as is, because its logic have a
heavy dependency on chancnt usage, however it's still doable.

Since v2:
- rebase on latest rc1
- collet Acked-by tag

Since v1:
- collet Acked-by tag
- fix typo

Jisheng Zhang (5):
dmaengine: dw-axi-dmac: Don't set chancnt
dmaengine: axi-dmac: Don't set chancnt
dmaengine: plx_dma: Don't set chancnt
dmaengine: hidma: Don't set chancnt
dmaengine: sprd: Don't set chancnt

drivers/dma/dma-axi-dmac.c | 1 -
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 1 -
drivers/dma/plx_dma.c | 1 -
drivers/dma/qcom/hidma.c | 1 -
drivers/dma/sprd-dma.c | 1 -
5 files changed, 5 deletions(-)

--
2.40.0



2023-05-21 11:51:58

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 2/5] dmaengine: axi-dmac: Don't set chancnt

The dma framework will calculate the dma channels chancnt, setting it
ourself is wrong.

Signed-off-by: Jisheng Zhang <[email protected]>
Acked-by: Lars-Peter Clausen <[email protected]>
---
drivers/dma/dma-axi-dmac.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/dma/dma-axi-dmac.c b/drivers/dma/dma-axi-dmac.c
index a812b9b00e6b..fc7cdad37161 100644
--- a/drivers/dma/dma-axi-dmac.c
+++ b/drivers/dma/dma-axi-dmac.c
@@ -963,7 +963,6 @@ static int axi_dmac_probe(struct platform_device *pdev)
dma_dev->device_terminate_all = axi_dmac_terminate_all;
dma_dev->device_synchronize = axi_dmac_synchronize;
dma_dev->dev = &pdev->dev;
- dma_dev->chancnt = 1;
dma_dev->src_addr_widths = BIT(dmac->chan.src_width);
dma_dev->dst_addr_widths = BIT(dmac->chan.dest_width);
dma_dev->directions = BIT(dmac->chan.direction);
--
2.40.0


2023-05-21 12:11:10

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 4/5] dmaengine: hidma: Don't set chancnt

The dma framework will calculate the dma channels chancnt, setting it
ourself is wrong.

Signed-off-by: Jisheng Zhang <[email protected]>
---
drivers/dma/qcom/hidma.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
index 04d1c33afc12..344525c3a32f 100644
--- a/drivers/dma/qcom/hidma.c
+++ b/drivers/dma/qcom/hidma.c
@@ -214,7 +214,6 @@ static int hidma_chan_init(struct hidma_dev *dmadev, u32 dma_sig)

spin_lock_init(&mchan->lock);
list_add_tail(&mchan->chan.device_node, &ddev->channels);
- dmadev->ddev.chancnt++;
return 0;
}

--
2.40.0


2023-05-21 12:33:04

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 5/5] dmaengine: sprd: Don't set chancnt

The dma framework will calculate the dma channels chancnt, setting it
ourself is wrong.

Signed-off-by: Jisheng Zhang <[email protected]>
Reviewed-by: Baolin Wang <[email protected]>
---
drivers/dma/sprd-dma.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c
index 474d3ba8ec9f..2b639adb48ba 100644
--- a/drivers/dma/sprd-dma.c
+++ b/drivers/dma/sprd-dma.c
@@ -1169,7 +1169,6 @@ static int sprd_dma_probe(struct platform_device *pdev)

dma_cap_set(DMA_MEMCPY, sdev->dma_dev.cap_mask);
sdev->total_chns = chn_count;
- sdev->dma_dev.chancnt = chn_count;
INIT_LIST_HEAD(&sdev->dma_dev.channels);
INIT_LIST_HEAD(&sdev->dma_dev.global_node);
sdev->dma_dev.dev = &pdev->dev;
--
2.40.0


2023-05-21 12:36:10

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 1/5] dmaengine: dw-axi-dmac: Don't set chancnt

The dma framework will calculate the dma channels chancnt, setting it
ourself is wrong.

Signed-off-by: Jisheng Zhang <[email protected]>
---
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 1 -
1 file changed, 1 deletion(-)

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 6937cc0c0b65..796b6caf0bab 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -1466,7 +1466,6 @@ static int dw_probe(struct platform_device *pdev)
dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);

/* DMA capabilities */
- dw->dma.chancnt = hdata->nr_channels;
dw->dma.max_burst = hdata->axi_rw_burst_len;
dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
--
2.40.0


2023-05-21 12:36:18

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v3 3/5] dmaengine: plx_dma: Don't set chancnt

The dma framework will calculate the dma channels chancnt, setting it
ourself is wrong.

Signed-off-by: Jisheng Zhang <[email protected]>
Acked-by: Logan Gunthorpe <[email protected]>
---
drivers/dma/plx_dma.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/dma/plx_dma.c b/drivers/dma/plx_dma.c
index 12725fa1655f..34b6416c3287 100644
--- a/drivers/dma/plx_dma.c
+++ b/drivers/dma/plx_dma.c
@@ -517,7 +517,6 @@ static int plx_dma_create(struct pci_dev *pdev)
plxdev->bar = pcim_iomap_table(pdev)[0];

dma = &plxdev->dma_dev;
- dma->chancnt = 1;
INIT_LIST_HEAD(&dma->channels);
dma_cap_set(DMA_MEMCPY, dma->cap_mask);
dma->copy_align = DMAENGINE_ALIGN_1_BYTE;
--
2.40.0


2023-05-24 07:08:47

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH v3 0/5] dma: don't set chancnt

On 21-05-23, 18:02, Jisheng Zhang wrote:
> I'm patching dw-axi-dmac to add more features, but I found a small
> clean up point and some drivers in drivers/dma/ have the same issue,
> so this series comes.
>
> The dma framework will calculate the dma channels chancnt, setting it
> is wrong.

Applied, thanks

--
~Vinod