lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ