[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPUzuU1r2xmJyG_Ke8pAvoZjJdvFwnxUqv1XQH7PrW3e3PTZoQ@mail.gmail.com>
Date: Fri, 13 Jun 2025 21:51:14 +0300
From: Alexander Kochetkov <al.kochet@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...el.com>
Cc: Vinod Koul <vkoul@...nel.org>, dmaengine@...r.kernel.org,
linux-kernel@...r.kernel.org, Nishad Saraf <nishads@....com>,
Lizhi Hou <lizhi.hou@....com>, Jacky Huang <ychuang3@...oton.com>,
Shan-Chun Hung <schung@...oton.com>, Florian Fainelli <florian.fainelli@...adcom.com>,
Ray Jui <rjui@...adcom.com>, Scott Branden <sbranden@...adcom.com>,
Lars-Peter Clausen <lars@...afoo.de>, Paul Cercueil <paul@...pouillou.net>,
Eugeniy Paltsev <Eugeniy.Paltsev@...opsys.com>, Manivannan Sadhasivam <mani@...nel.org>,
Frank Li <Frank.Li@....com>, Zhou Wang <wangzhou1@...ilicon.com>,
Longfang Liu <liulongfang@...wei.com>, Andy Shevchenko <andy@...nel.org>,
Shawn Guo <shawnguo@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>, Fabio Estevam <festevam@...il.com>,
Keguang Zhang <keguang.zhang@...il.com>, Sean Wang <sean.wang@...iatek.com>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Andreas Färber <afaerber@...e.de>,
Daniel Mack <daniel@...que.org>, Haojian Zhuang <haojian.zhuang@...il.com>,
Robert Jarzmik <robert.jarzmik@...e.fr>, Paul Walmsley <paul.walmsley@...ive.com>,
Samuel Holland <samuel.holland@...ive.com>, Orson Zhai <orsonzhai@...il.com>,
Baolin Wang <baolin.wang@...ux.alibaba.com>, Chunyan Zhang <zhang.lyra@...il.com>,
Patrice Chotard <patrice.chotard@...s.st.com>,
Amélie Delaunay <amelie.delaunay@...s.st.com>,
Maxime Coquelin <mcoquelin.stm32@...il.com>, Alexandre Torgue <alexandre.torgue@...s.st.com>,
Chen-Yu Tsai <wens@...e.org>, Jernej Skrabec <jernej.skrabec@...il.com>,
Laxman Dewangan <ldewangan@...dia.com>, Jon Hunter <jonathanh@...dia.com>,
Thierry Reding <thierry.reding@...il.com>, Peter Ujfalusi <peter.ujfalusi@...il.com>,
Kunihiko Hayashi <hayashi.kunihiko@...ionext.com>, Masami Hiramatsu <mhiramat@...nel.org>,
Dave Jiang <dave.jiang@...el.com>, Amit Vadhavana <av2082000@...il.com>,
Uwe Kleine-König <u.kleine-koenig@...libre.com>,
Ulf Hansson <ulf.hansson@...aro.org>, Md Sadre Alam <quic_mdalam@...cinc.com>,
Casey Connolly <casey.connolly@...aro.org>, Kees Cook <kees@...nel.org>,
Fenghua Yu <fenghua.yu@...el.com>, Jyothi Kumar Seerapu <quic_jseerapu@...cinc.com>
Subject: Re: [PATCH 1/1] dmaengine: virt-dma: convert tasklet to BH workqueue
for callback invocation
>
> It seems it was ordered. Please, preserve the order.
> It not, try to squeeze to have longest possible ordered chain
> (it can be interleaved with something unordered, just look at
> the big picture).
>
> (Same applies to other similar cases)
I'll this that in v2. Thanks!
> ...
>
> What about the driver(s) that use threaded IRQ instead?
> Do you plan to convert them as well?
>
> I am talking about current users of virt-dma that do not use tasklets.
>
> --
> With Best Regards,
> Andy Shevchenko
>
I think, I've found all the users of virt-dma. Could you, please,
provide example of such driver?
Here is what I did to locate current users of virt-dma.
I got list of drivers using following command:
grep -r -e 'struct virt_dma_chan' -e 'virt-dma.h' . | sort | cut -f 1
-d : | uniq
./drivers/dma/amba-pl08x.c
./drivers/dma/amd/ae4dma/ae4dma.h
./drivers/dma/amd/ptdma/ptdma.h
./drivers/dma/amd/qdma/qdma.c
./drivers/dma/amd/qdma/qdma.h
./drivers/dma/arm-dma350.c
./drivers/dma/at_hdmac.c
./drivers/dma/bcm2835-dma.c
./drivers/dma/dma-axi-dmac.c
./drivers/dma/dma-jz4780.c
./drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
./drivers/dma/dw-axi-dmac/dw-axi-dmac.h
./drivers/dma/dw-edma/dw-edma-core.c
./drivers/dma/dw-edma/dw-edma-core.h
./drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
./drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
./drivers/dma/fsl-edma-common.h
./drivers/dma/fsl-qdma.c
./drivers/dma/hisi_dma.c
./drivers/dma/hsu/hsu.h
./drivers/dma/idma64.h
./drivers/dma/img-mdc-dma.c
./drivers/dma/imx-sdma.c
./drivers/dma/k3dma.c
./drivers/dma/lgm/lgm-dma.c
./drivers/dma/loongson1-apb-dma.c
./drivers/dma/loongson2-apb-dma.c
./drivers/dma/mediatek/mtk-cqdma.c
./drivers/dma/mediatek/mtk-hsdma.c
./drivers/dma/mediatek/mtk-uart-apdma.c
./drivers/dma/milbeaut-hdmac.c
./drivers/dma/milbeaut-xdmac.c
./drivers/dma/moxart-dma.c
./drivers/dma/owl-dma.c
./drivers/dma/pxa_dma.c
./drivers/dma/qcom/bam_dma.c
./drivers/dma/qcom/gpi.c
./drivers/dma/qcom/qcom_adm.c
./drivers/dma/sa11x0-dma.c
./drivers/dma/sf-pdma/sf-pdma.c
./drivers/dma/sf-pdma/sf-pdma.h
./drivers/dma/sh/rz-dmac.c
./drivers/dma/sh/usb-dmac.c
./drivers/dma/sprd-dma.c
./drivers/dma/st_fdma.h
./drivers/dma/stm32/stm32-dma.c
./drivers/dma/stm32/stm32-dma3.c
./drivers/dma/stm32/stm32-mdma.c
./drivers/dma/sun4i-dma.c
./drivers/dma/sun6i-dma.c
./drivers/dma/tegra186-gpc-dma.c
./drivers/dma/tegra210-adma.c
./drivers/dma/ti/edma.c
./drivers/dma/ti/k3-udma.c
./drivers/dma/ti/omap-dma.c
./drivers/dma/uniphier-mdmac.c
./drivers/dma/uniphier-xdmac.c
./drivers/dma/virt-dma.c
./drivers/dma/virt-dma.h
./drivers/dma/xilinx/xdma.c
./drivers/dma/xilinx/xilinx_dpdma.c
After that I did following to find additional drivers, and found them
inside misc.
grep -r -e ae4dma.h -e ptdma.h -e qdma.h -e dw-axi-dmac.h -e
dw-edma-core.h -e dpaa2-qdma.h -e fsl-edma-common.h -e hsu.h -e
idma64.h -e sf-pdma.h -e st_fdma.h . | sort | cut -f 1 -d : | uniq
./drivers/dma/amd/ae4dma/ae4dma-dev.c
./drivers/dma/amd/ae4dma/ae4dma-pci.c
./drivers/dma/amd/ae4dma/ae4dma.h
./drivers/dma/amd/ptdma/ptdma-debugfs.c
./drivers/dma/amd/ptdma/ptdma-dev.c
./drivers/dma/amd/ptdma/ptdma-dmaengine.c
./drivers/dma/amd/ptdma/ptdma-pci.c
./drivers/dma/amd/qdma/qdma-comm-regs.c
./drivers/dma/amd/qdma/qdma.c
./drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
./drivers/dma/dw-edma/dw-edma-core.c
./drivers/dma/dw-edma/dw-edma-pcie.c
./drivers/dma/dw-edma/dw-edma-v0-core.c
./drivers/dma/dw-edma/dw-edma-v0-debugfs.c
./drivers/dma/dw-edma/dw-hdma-v0-core.c
./drivers/dma/dw-edma/dw-hdma-v0-debugfs.c
./drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
./drivers/dma/fsl-edma-common.c
./drivers/dma/fsl-edma-main.c
./drivers/dma/fsl-edma-trace.c
./drivers/dma/fsl-qdma.c
./drivers/dma/hsu/hsu.c
./drivers/dma/hsu/hsu.h
./drivers/dma/hsu/pci.c
./drivers/dma/idma64.c
./drivers/dma/idma64.h
./drivers/dma/mcf-edma-main.c
./drivers/dma/mediatek/mtk-cqdma.c
./drivers/dma/sf-pdma/sf-pdma.c
./drivers/dma/st_fdma.c
./drivers/dma/st_fdma.h
./drivers/mfd/intel-lpss.c
./drivers/net/ethernet/airoha/airoha_eth.c
./drivers/net/ethernet/mediatek/mtk_eth_soc.c
./drivers/net/ethernet/mediatek/mtk_eth_soc.h
./drivers/pci/controller/pcie-xilinx-dma-pl.c
./drivers/tty/serial/8250/8250_mid.c
./include/linux/dma/hsu.h
Just realized, that I missed to check this drivers:
./drivers/net/ethernet/airoha/airoha_eth.c
./drivers/net/ethernet/mediatek/mtk_eth_soc.c
./drivers/net/ethernet/mediatek/mtk_eth_soc.h
./drivers/pci/controller/pcie-xilinx-dma-pl.c
./drivers/tty/serial/8250/8250_mid.c
I've applied the following config to the kernel, to build all the
drivers. I've modified some Kconfig files in order all options apply.
And checked that every file in the above list builds successfully.
Some drivers have compile errors, unrelated to virt-dma. Some drivers
produce link errors, but compile success. I checked that each .o-file
has a reasonable size.
CONFIG_FORCE_PCI=y
CONFIG_PCI=y
CONFIG_AMD_QDMA=y
CONFIG_AMD_PTDMA=y
CONFIG_DW_AXI_DMAC=y
CONFIG_DW_EDMA=y
CONFIG_DW_EDMA_PCIE=y
CONFIG_INTEL_LDMA=y
CONFIG_MTK_HSDMA=y
CONFIG_MTK_CQDMA=y
CONFIG_MTK_UART_APDMA=y
# CONFIG_QCOM_ADM=y - error: assignment to 'u32 *' {aka 'unsigned int
*'} from incompatible pointer type 'phys_addr_t *'
CONFIG_QCOM_GPI_DMA=y
CONFIG_QCOM_BAM_DMA=y
CONFIG_SF_PDMA=y
CONFIG_STM32_DMA=y
CONFIG_STM32_MDMA=y
CONFIG_STM32_DMA3=y
CONFIG_DMA_OMAP=y
CONFIG_TI_EDMA=y
CONFIG_TI_K3_UDMA=y
CONFIG_XILINX_ZYNQMP_DPDMA=y
CONFIG_XILINX_XDMA=y
CONFIG_AMBA_PL08X=y
CONFIG_ARM_DMA350=y
# CONFIG_FSL_DMA=y - error: implicit declaration of function '__ilog2
CONFIG_FSL_EDMA=y
CONFIG_FSL_QDMA=y
CONFIG_MCF_EDMA=y
CONFIG_INTEL_IDMA64=y
CONFIG_DMA_SUN6I=y
CONFIG_DMA_SUN4I=y
CONFIG_AT_HDMAC=y
# CONFIG_ST_FDMA=y - link errors
CONFIG_K3_DMA=y
CONFIG_DMA_SA11X0=y
CONFIG_AXI_DMAC=y
CONFIG_IMG_MDC_DMA=y
CONFIG_UNIPHIER_XDMAC=y
CONFIG_UNIPHIER_MDMAC=y
CONFIG_LOONGSON1_APB_DMA=y
CONFIG_LOONGSON2_APB_DMA=y
CONFIG_DMA_BCM2835=y
CONFIG_TEGRA210_ADMA=y
CONFIG_TEGRA186_GPC_DMA=y
CONFIG_MOXART_DMA=y
CONFIG_DMA_JZ4780=y
CONFIG_IMX_SDMA=y
CONFIG_OWL_DMA=y
CONFIG_SPRD_DMA=y
CONFIG_MILBEAUT_XDMAC=y
CONFIG_MILBEAUT_HDMAC=y
CONFIG_HISI_DMA=y
# CONFIG_FSL_DPAA2_QDMA=y - link errors
CONFIG_RZ_DMAC=y
CONFIG_RENESAS_USB_DMAC=y
CONFIG_PXA_DMA=y
CONFIG_HSU_DMA=y
CONFIG_HSU_DMA_PCI=y
CONFIG_MFD_INTEL_LPSS=y
Powered by blists - more mailing lists