From: Vinod Koul <vinod.koul@intel.com>
To: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Dan Williams <dan.j.williams@intel.com>,
Yuan Yao <yao.yuan@freescale.com>,
dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
ldv-project@linuxtesting.org
Subject: Re: [PATCH] dmaengine: fsl-edma: disable clks in case of failure in probe
Date: Sun, 13 Mar 2016 22:01:32 +0530 [thread overview]
Message-ID: <20160313163132.GG13211@localhost> (raw)
In-Reply-To: <1457731719-27865-1-git-send-email-khoroshilov@ispras.ru>
On Sat, Mar 12, 2016 at 12:28:39AM +0300, Alexey Khoroshilov wrote:
> fsl_edma_probe() does not disable already enabled clocks
> in case of failure. The patch fixes that.
>
> Found by Linux Driver Verification project (linuxtesting.org).
The typical method to give this credit is Reported-by: ...
In this case you may use the mail id which sent the error report to you, see
examples of kbuild:
Reported-by: kbuild test robot <fengguang.wu@intel.com>
>
> Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
> ---
> drivers/dma/fsl-edma.c | 27 +++++++++++++++++++--------
> 1 file changed, 19 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/dma/fsl-edma.c b/drivers/dma/fsl-edma.c
> index be2e62b87948..58271302e43d 100644
> --- a/drivers/dma/fsl-edma.c
> +++ b/drivers/dma/fsl-edma.c
> @@ -885,20 +885,23 @@ static int fsl_edma_probe(struct platform_device *pdev)
>
> res = platform_get_resource(pdev, IORESOURCE_MEM, 1 + i);
> fsl_edma->muxbase[i] = devm_ioremap_resource(&pdev->dev, res);
> - if (IS_ERR(fsl_edma->muxbase[i]))
> - return PTR_ERR(fsl_edma->muxbase[i]);
> + if (IS_ERR(fsl_edma->muxbase[i])) {
> + ret = PTR_ERR(fsl_edma->muxbase[i]);
> + goto err_clk;
> + }
>
> sprintf(clkname, "dmamux%d", i);
> fsl_edma->muxclk[i] = devm_clk_get(&pdev->dev, clkname);
> if (IS_ERR(fsl_edma->muxclk[i])) {
> dev_err(&pdev->dev, "Missing DMAMUX block clock.\n");
> - return PTR_ERR(fsl_edma->muxclk[i]);
> + ret = PTR_ERR(fsl_edma->muxclk[i]);
> + goto err_clk;
> }
>
> ret = clk_prepare_enable(fsl_edma->muxclk[i]);
> if (ret) {
> dev_err(&pdev->dev, "DMAMUX clk block failed.\n");
> - return ret;
> + goto err_clk;
> }
>
> }
> @@ -923,7 +926,7 @@ static int fsl_edma_probe(struct platform_device *pdev)
> edma_writel(fsl_edma, ~0, fsl_edma->membase + EDMA_INTR);
> ret = fsl_edma_irq_init(pdev, fsl_edma);
> if (ret)
> - return ret;
> + goto err_allclk;
>
> dma_cap_set(DMA_PRIVATE, fsl_edma->dma_dev.cap_mask);
> dma_cap_set(DMA_SLAVE, fsl_edma->dma_dev.cap_mask);
> @@ -952,20 +955,28 @@ static int fsl_edma_probe(struct platform_device *pdev)
> ret = dma_async_device_register(&fsl_edma->dma_dev);
> if (ret) {
> dev_err(&pdev->dev, "Can't register Freescale eDMA engine.\n");
> - return ret;
> + goto err_allclk;
> }
>
> ret = of_dma_controller_register(np, fsl_edma_xlate, fsl_edma);
> if (ret) {
> dev_err(&pdev->dev, "Can't register Freescale eDMA of_dma.\n");
> - dma_async_device_unregister(&fsl_edma->dma_dev);
> - return ret;
> + goto err_async;
> }
>
> /* enable round robin arbitration */
> edma_writel(fsl_edma, EDMA_CR_ERGA | EDMA_CR_ERCA, fsl_edma->membase + EDMA_CR);
>
> return 0;
> +
> +err_async:
> + dma_async_device_unregister(&fsl_edma->dma_dev);
> +err_allclk:
> + i = DMAMUX_NR;
> +err_clk:
> + while (--i >= 0)
> + clk_disable_unprepare(fsl_edma->muxclk[i]);
> + return ret;
> }
>
> static int fsl_edma_remove(struct platform_device *pdev)
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe dmaengine" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
~Vinod
prev parent reply other threads:[~2016-03-13 16:27 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-11 21:28 [PATCH] dmaengine: fsl-edma: disable clks in case of failure in probe Alexey Khoroshilov
2016-03-13 16:31 ` Vinod Koul [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160313163132.GG13211@localhost \
--to=vinod.koul@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=khoroshilov@ispras.ru \
--cc=ldv-project@linuxtesting.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yao.yuan@freescale.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.