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: <CAPUzuU1oqiOhKcV5e21rhjP_XcscGGLq9oZMvcK4DB_B2yZ7Jw@mail.gmail.com>
Date: Tue, 17 Jun 2025 13:16:41 +0300
From: Alexander Kochetkov <al.kochet@...il.com>
To: kernel test robot <lkp@...el.com>
Cc: Vinod Koul <vkoul@...nel.org>, dmaengine@...r.kernel.org, 
	linux-kernel@...r.kernel.org, llvm@...ts.linux.dev, 
	oe-kbuild-all@...ts.linux.dev, 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>
Subject: Re: [PATCH v2 2/2] !!! TESTING ONLY !!! Allow compile virt-dma users
 on ARM64 platform

One more question. I can translate all other dma drivers to BH
workqueue. I cannot test all of them, but I did this for sun6i and it
works as usual. Fix straightforward. Is it a good idea?

That happened because of this change and this driver doesn't compile on x64.
Any action from me? Should I send v3 without this change?

diff --git a/drivers/dma/qcom/Kconfig b/drivers/dma/qcom/Kconfig
index ace75d7b835a..224436d3e50a 100644
--- a/drivers/dma/qcom/Kconfig
+++ b/drivers/dma/qcom/Kconfig
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config QCOM_ADM
        tristate "Qualcomm ADM support"
-       depends on (ARCH_QCOM || COMPILE_TEST) && !PHYS_ADDR_T_64BIT
+       depends on (ARCH_QCOM || COMPILE_TEST)
        select DMA_ENGINE
        select DMA_VIRTUAL_CHANNELS
        help

вт, 17 июн. 2025 г. в 12:31, kernel test robot <lkp@...el.com>:

>
> Hi Alexander,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on vkoul-dmaengine/next]
> [also build test WARNING on shawnguo/for-next sunxi/sunxi/for-next lee-mfd/for-mfd-next linus/master v6.16-rc2 next-20250617]
> [cannot apply to atorgue-stm32/stm32-next lee-mfd/for-mfd-fixes]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url:    https://github.com/intel-lab-lkp/linux/commits/Alexander-Kochetkov/dmaengine-virt-dma-convert-tasklet-to-BH-workqueue-for-callback-invocation/20250616-205118
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next
> patch link:    https://lore.kernel.org/r/20250616124934.141782-3-al.kochet%40gmail.com
> patch subject: [PATCH v2 2/2] !!! TESTING ONLY !!! Allow compile virt-dma users on ARM64 platform
> config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20250617/202506171615.p1kpBZuQ-lkp@intel.com/config)
> compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250617/202506171615.p1kpBZuQ-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@...el.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202506171615.p1kpBZuQ-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
>    drivers/dma/qcom/qcom_adm.c:245:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
>      245 |                 src = &achan->slave.src_addr;
>          |                     ^ ~~~~~~~~~~~~~~~~~~~~~~
>    drivers/dma/qcom/qcom_adm.c:251:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
>      251 |                 dst = &achan->slave.dst_addr;
>          |                     ^ ~~~~~~~~~~~~~~~~~~~~~~
>    drivers/dma/qcom/qcom_adm.c:309:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
>      309 |                 src = &achan->slave.src_addr;
>          |                     ^ ~~~~~~~~~~~~~~~~~~~~~~
>    drivers/dma/qcom/qcom_adm.c:313:7: error: incompatible pointer types assigning to 'u32 *' (aka 'unsigned int *') from 'phys_addr_t *' (aka 'unsigned long long *') [-Werror,-Wincompatible-pointer-types]
>      313 |                 dst = &achan->slave.dst_addr;
>          |                     ^ ~~~~~~~~~~~~~~~~~~~~~~
> >> drivers/dma/qcom/qcom_adm.c:848:59: warning: implicit conversion from 'unsigned long' to 'unsigned int' changes value from 18446744072371568648 to 2956984328 [-Wconstant-conversion]
>      848 |         writel(ADM_CI_RANGE_START(0x40) | ADM_CI_RANGE_END(0xb0) |
>          |         ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
>      849 |                ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(0));
>          |                ~~~~~~~~~~~~~~~~~~~~
>    1 warning and 4 errors generated.
>
>
> vim +848 drivers/dma/qcom/qcom_adm.c
>
> 03de6b273805b3 Arnd Bergmann     2021-11-22  745
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  746  static int adm_dma_probe(struct platform_device *pdev)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  747  {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  748        struct adm_device *adev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  749        int ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  750        u32 i;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  751
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  752        adev = devm_kzalloc(&pdev->dev, sizeof(*adev), GFP_KERNEL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  753        if (!adev)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  754                return -ENOMEM;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  755
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  756        adev->dev = &pdev->dev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  757
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  758        adev->regs = devm_platform_ioremap_resource(pdev, 0);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  759        if (IS_ERR(adev->regs))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  760                return PTR_ERR(adev->regs);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  761
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  762        adev->irq = platform_get_irq(pdev, 0);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  763        if (adev->irq < 0)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  764                return adev->irq;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  765
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  766        ret = of_property_read_u32(pdev->dev.of_node, "qcom,ee", &adev->ee);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  767        if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  768                dev_err(adev->dev, "Execution environment unspecified\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  769                return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  770        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  771
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  772        adev->core_clk = devm_clk_get(adev->dev, "core");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  773        if (IS_ERR(adev->core_clk))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  774                return PTR_ERR(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  775
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  776        adev->iface_clk = devm_clk_get(adev->dev, "iface");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  777        if (IS_ERR(adev->iface_clk))
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  778                return PTR_ERR(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  779
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  780        adev->clk_reset = devm_reset_control_get_exclusive(&pdev->dev, "clk");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  781        if (IS_ERR(adev->clk_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  782                dev_err(adev->dev, "failed to get ADM0 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  783                return PTR_ERR(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  784        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  785
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  786        adev->c0_reset = devm_reset_control_get_exclusive(&pdev->dev, "c0");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  787        if (IS_ERR(adev->c0_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  788                dev_err(adev->dev, "failed to get ADM0 C0 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  789                return PTR_ERR(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  790        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  791
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  792        adev->c1_reset = devm_reset_control_get_exclusive(&pdev->dev, "c1");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  793        if (IS_ERR(adev->c1_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  794                dev_err(adev->dev, "failed to get ADM0 C1 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  795                return PTR_ERR(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  796        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  797
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  798        adev->c2_reset = devm_reset_control_get_exclusive(&pdev->dev, "c2");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  799        if (IS_ERR(adev->c2_reset)) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  800                dev_err(adev->dev, "failed to get ADM0 C2 reset\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  801                return PTR_ERR(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  802        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  803
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  804        ret = clk_prepare_enable(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  805        if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  806                dev_err(adev->dev, "failed to prepare/enable core clock\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  807                return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  808        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  809
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  810        ret = clk_prepare_enable(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  811        if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  812                dev_err(adev->dev, "failed to prepare/enable iface clock\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  813                goto err_disable_core_clk;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  814        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  815
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  816        reset_control_assert(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  817        reset_control_assert(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  818        reset_control_assert(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  819        reset_control_assert(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  820
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  821        udelay(2);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  822
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  823        reset_control_deassert(adev->clk_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  824        reset_control_deassert(adev->c0_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  825        reset_control_deassert(adev->c1_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  826        reset_control_deassert(adev->c2_reset);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  827
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  828        adev->channels = devm_kcalloc(adev->dev, ADM_MAX_CHANNELS,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  829                                      sizeof(*adev->channels), GFP_KERNEL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  830
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  831        if (!adev->channels) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  832                ret = -ENOMEM;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  833                goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  834        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  835
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  836        /* allocate and initialize channels */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  837        INIT_LIST_HEAD(&adev->common.channels);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  838
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  839        for (i = 0; i < ADM_MAX_CHANNELS; i++)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  840                adm_channel_init(adev, &adev->channels[i], i);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  841
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  842        /* reset CRCIs */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  843        for (i = 0; i < 16; i++)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  844                writel(ADM_CRCI_CTL_RST, adev->regs +
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  845                        ADM_CRCI_CTL(i, adev->ee));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  846
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  847        /* configure client interfaces */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14 @848        writel(ADM_CI_RANGE_START(0x40) | ADM_CI_RANGE_END(0xb0) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  849               ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(0));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  850        writel(ADM_CI_RANGE_START(0x2a) | ADM_CI_RANGE_END(0x2c) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  851               ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(1));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  852        writel(ADM_CI_RANGE_START(0x12) | ADM_CI_RANGE_END(0x28) |
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  853               ADM_CI_BURST_8_WORDS, adev->regs + ADM_CI_CONF(2));
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  854        writel(ADM_GP_CTL_LP_EN | ADM_GP_CTL_LP_CNT(0xf),
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  855               adev->regs + ADM_GP_CTL);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  856
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  857        ret = devm_request_irq(adev->dev, adev->irq, adm_dma_irq,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  858                               0, "adm_dma", adev);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  859        if (ret)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  860                goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  861
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  862        platform_set_drvdata(pdev, adev);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  863
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  864        adev->common.dev = adev->dev;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  865        adev->common.dev->dma_parms = &adev->dma_parms;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  866
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  867        /* set capabilities */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  868        dma_cap_zero(adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  869        dma_cap_set(DMA_SLAVE, adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  870        dma_cap_set(DMA_PRIVATE, adev->common.cap_mask);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  871
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  872        /* initialize dmaengine apis */
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  873        adev->common.directions = BIT(DMA_DEV_TO_MEM | DMA_MEM_TO_DEV);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  874        adev->common.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  875        adev->common.src_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  876        adev->common.dst_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  877        adev->common.device_free_chan_resources = adm_free_chan;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  878        adev->common.device_prep_slave_sg = adm_prep_slave_sg;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  879        adev->common.device_issue_pending = adm_issue_pending;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  880        adev->common.device_tx_status = adm_tx_status;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  881        adev->common.device_terminate_all = adm_terminate_all;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  882        adev->common.device_config = adm_slave_config;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  883
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  884        ret = dma_async_device_register(&adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  885        if (ret) {
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  886                dev_err(adev->dev, "failed to register dma async device\n");
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  887                goto err_disable_clks;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  888        }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  889
> 03de6b273805b3 Arnd Bergmann     2021-11-22  890        ret = of_dma_controller_register(pdev->dev.of_node, adm_dma_xlate,
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  891                                         &adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  892        if (ret)
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  893                goto err_unregister_dma;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  894
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  895        return 0;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  896
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  897  err_unregister_dma:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  898        dma_async_device_unregister(&adev->common);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  899  err_disable_clks:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  900        clk_disable_unprepare(adev->iface_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  901  err_disable_core_clk:
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  902        clk_disable_unprepare(adev->core_clk);
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  903
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  904        return ret;
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  905  }
> 5c9f8c2dbdbe53 Jonathan McDowell 2020-11-14  906
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ