All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Vinod Koul <vkoul@kernel.org>
Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>,
	linux-kernel@vger.kernel.org, linux-amarula@amarulasolutions.com,
	Michael Trimarchi <michael@amarulasolutions.com>,
	stable@vger.kernel.org, Fabio Estevam <festevam@gmail.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3] dmaengine: mxs: fix driver registering
Date: Tue, 13 Sep 2022 17:16:12 +0200	[thread overview]
Message-ID: <20220913151612.GI12909@pengutronix.de> (raw)
In-Reply-To: <Yqs3E0ipEpsCT2T2@matsya>

Hi Vinod,

On Thu, Jun 16, 2022 at 06:58:43AM -0700, Vinod Koul wrote:
> On 14-06-22, 12:17, Dario Binacchi wrote:
> > Driver registration fails on SOC imx8mn as its supplier, the clock
> > control module, is not ready. Since platform_driver_probe(), as
> > reported by its description, is incompatible with deferred probing,
> > we have to use platform_driver_register().
> > 
> > Fixes: a580b8c5429a ("dmaengine: mxs-dma: add dma support for i.MX23/28")
> > Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > Cc: stable@vger.kernel.org
> > 
> > ---
> > 
> > Changes in v3:
> > - Restore __init in front of mxs_dma_init() definition.
> > 
> > Changes in v2:
> > - Add the tag "Cc: stable@vger.kernel.org" in the sign-off area.
> > 
> >  drivers/dma/mxs-dma.c | 9 +++------
> >  1 file changed, 3 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> > index 994fc4d2aca4..6e90540fedc4 100644
> > --- a/drivers/dma/mxs-dma.c
> > +++ b/drivers/dma/mxs-dma.c
> > @@ -741,7 +741,7 @@ static struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
> >  				     ofdma->of_node);
> >  }
> >  
> > -static int __init mxs_dma_probe(struct platform_device *pdev)
> > +static int mxs_dma_probe(struct platform_device *pdev)
> 
> why drop __init here, if there is a reason for that please split this
> change and document such reason...

The reason for dropping __init comes with this patch. With
platform_driver_probe() the probe function is called only once, during
init time. The problem with platform_driver_probe() is that the probe
function will never be called again when it initially returns
-EPROBE_DEFER. That's a problem for Dario: The clock is not yet
available, the driver defers probe and will never be probed again
when the clock is finally available.

With platform_driver_register() to which this patch switches to the
probe function can be called at any time, thus __init has to be removed.

For what it's worth:

Acked-by: Sascha Hauer <s.hauer@pengutronix.de>

for this patch.

Sascha

> 
> >  {
> >  	struct device_node *np = pdev->dev.of_node;
> >  	const struct mxs_dma_type *dma_type;
> > @@ -839,10 +839,7 @@ static struct platform_driver mxs_dma_driver = {
> >  		.name	= "mxs-dma",
> >  		.of_match_table = mxs_dma_dt_ids,
> >  	},
> > +	.probe = mxs_dma_probe,
> >  };
> >  
> > -static int __init mxs_dma_module_init(void)
> > -{
> > -	return platform_driver_probe(&mxs_dma_driver, mxs_dma_probe);
> > -}
> > -subsys_initcall(mxs_dma_module_init);
> > +module_platform_driver(mxs_dma_driver);
> > -- 
> > 2.32.0
> 
> -- 
> ~Vinod
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

WARNING: multiple messages have this Message-ID (diff)
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Vinod Koul <vkoul@kernel.org>
Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>,
	linux-kernel@vger.kernel.org, linux-amarula@amarulasolutions.com,
	Michael Trimarchi <michael@amarulasolutions.com>,
	stable@vger.kernel.org, Fabio Estevam <festevam@gmail.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3] dmaengine: mxs: fix driver registering
Date: Tue, 13 Sep 2022 17:16:12 +0200	[thread overview]
Message-ID: <20220913151612.GI12909@pengutronix.de> (raw)
In-Reply-To: <Yqs3E0ipEpsCT2T2@matsya>

Hi Vinod,

On Thu, Jun 16, 2022 at 06:58:43AM -0700, Vinod Koul wrote:
> On 14-06-22, 12:17, Dario Binacchi wrote:
> > Driver registration fails on SOC imx8mn as its supplier, the clock
> > control module, is not ready. Since platform_driver_probe(), as
> > reported by its description, is incompatible with deferred probing,
> > we have to use platform_driver_register().
> > 
> > Fixes: a580b8c5429a ("dmaengine: mxs-dma: add dma support for i.MX23/28")
> > Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com>
> > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > Cc: stable@vger.kernel.org
> > 
> > ---
> > 
> > Changes in v3:
> > - Restore __init in front of mxs_dma_init() definition.
> > 
> > Changes in v2:
> > - Add the tag "Cc: stable@vger.kernel.org" in the sign-off area.
> > 
> >  drivers/dma/mxs-dma.c | 9 +++------
> >  1 file changed, 3 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> > index 994fc4d2aca4..6e90540fedc4 100644
> > --- a/drivers/dma/mxs-dma.c
> > +++ b/drivers/dma/mxs-dma.c
> > @@ -741,7 +741,7 @@ static struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
> >  				     ofdma->of_node);
> >  }
> >  
> > -static int __init mxs_dma_probe(struct platform_device *pdev)
> > +static int mxs_dma_probe(struct platform_device *pdev)
> 
> why drop __init here, if there is a reason for that please split this
> change and document such reason...

The reason for dropping __init comes with this patch. With
platform_driver_probe() the probe function is called only once, during
init time. The problem with platform_driver_probe() is that the probe
function will never be called again when it initially returns
-EPROBE_DEFER. That's a problem for Dario: The clock is not yet
available, the driver defers probe and will never be probed again
when the clock is finally available.

With platform_driver_register() to which this patch switches to the
probe function can be called at any time, thus __init has to be removed.

For what it's worth:

Acked-by: Sascha Hauer <s.hauer@pengutronix.de>

for this patch.

Sascha

> 
> >  {
> >  	struct device_node *np = pdev->dev.of_node;
> >  	const struct mxs_dma_type *dma_type;
> > @@ -839,10 +839,7 @@ static struct platform_driver mxs_dma_driver = {
> >  		.name	= "mxs-dma",
> >  		.of_match_table = mxs_dma_dt_ids,
> >  	},
> > +	.probe = mxs_dma_probe,
> >  };
> >  
> > -static int __init mxs_dma_module_init(void)
> > -{
> > -	return platform_driver_probe(&mxs_dma_driver, mxs_dma_probe);
> > -}
> > -subsys_initcall(mxs_dma_module_init);
> > +module_platform_driver(mxs_dma_driver);
> > -- 
> > 2.32.0
> 
> -- 
> ~Vinod
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-09-13 17:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-14 10:17 [PATCH v3] dmaengine: mxs: fix driver registering Dario Binacchi
2022-06-14 10:17 ` Dario Binacchi
2022-06-16 13:58 ` Vinod Koul
2022-06-16 13:58   ` Vinod Koul
2022-09-13 15:16   ` Sascha Hauer [this message]
2022-09-13 15:16     ` Sascha Hauer

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=20220913151612.GI12909@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=dario.binacchi@amarulasolutions.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-amarula@amarulasolutions.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael@amarulasolutions.com \
    --cc=shawnguo@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=vkoul@kernel.org \
    /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.