All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Andersson <andersson@kernel.org>
To: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
Cc: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>,
	 Srinivas Kandagatla <srini@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Vinod Koul <vkoul@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	 linux-arm-msm@vger.kernel.org, linux-sound@vger.kernel.org,
	linux-kernel@vger.kernel.org,  stable@vger.kernel.org
Subject: Re: [PATCH 1/7] slimbus: qcom-ngd-ctrl: Fix up platform_driver registration
Date: Tue, 31 Mar 2026 22:06:11 -0500	[thread overview]
Message-ID: <acyLI4FWUOue6cFL@baldur> (raw)
In-Reply-To: <20260310073309.djxq5zsyudhjob73@hu-mojha-hyd.qualcomm.com>

On Tue, Mar 10, 2026 at 01:03:09PM +0530, Mukesh Ojha wrote:
> On Mon, Mar 09, 2026 at 11:09:02PM -0500, Bjorn Andersson wrote:
> > Device drivers should not invoke platform_driver_register()/unregister()
> > in their probe and remove paths. They should further not rely on
> > platform_driver_unregister() as their only means of "deleting" their
> > child devices.
> > 
> > Introduce a helper to unregister the child device and move the
> > platform_driver_register()/unregister() to module_init()/exit().
> > 
> > Fixes: 917809e2280b ("slimbus: ngd: Add qcom SLIMBus NGD driver")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
> 
> Reviewed-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
> 
> > ---
> >  drivers/slimbus/qcom-ngd-ctrl.c | 36 +++++++++++++++++++++++++++++++++---
> >  1 file changed, 33 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c
> > index 9aa7218b4e8d2b350835626839371ed6e19860e2..c69656a0ef1766d5a9df40bdf37bae8f64789fab 100644
> > --- a/drivers/slimbus/qcom-ngd-ctrl.c
> > +++ b/drivers/slimbus/qcom-ngd-ctrl.c
> > @@ -1562,6 +1562,13 @@ static int of_qcom_slim_ngd_register(struct device *parent,
> >  	return -ENODEV;
> >  }
> >  
> > +static void qcom_slim_ngd_unregister(struct qcom_slim_ngd_ctrl *ctrl)
> > +{
> > +	struct qcom_slim_ngd *ngd = ctrl->ngd;
> > +
> > +	platform_device_del(ngd->pdev);
> 
> First, it surprised me why only once, then I saw there is return 0 in
> for_each_available_child_of_node_scoped() loop..
> 

Yeah, I'm not sure about that one. If I read the binding correctly it
allows for an arbitrary number of child devices, but the implementation
will only consider the first active child, and silently ignore any
others.

I don't know if it's a valid usecase to have multiple NGDs on a
controller thought?

Regards,
Bjorn

> > +}
> > +
> >  static int qcom_slim_ngd_probe(struct platform_device *pdev)
> >  {
> >  	struct device *dev = &pdev->dev;
> > @@ -1664,7 +1671,6 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)
> >  		goto err_pdr_lookup;
> >  	}
> >  
> > -	platform_driver_register(&qcom_slim_ngd_driver);
> >  	return of_qcom_slim_ngd_register(dev, ctrl);
> >  
> >  err_pdr_alloc:
> > @@ -1678,7 +1684,9 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev)
> >  
> >  static void qcom_slim_ngd_ctrl_remove(struct platform_device *pdev)
> >  {
> > -	platform_driver_unregister(&qcom_slim_ngd_driver);
> > +	struct qcom_slim_ngd_ctrl *ctrl = platform_get_drvdata(pdev);
> > +
> > +	qcom_slim_ngd_unregister(ctrl);
> >  }
> >  
> >  static void qcom_slim_ngd_remove(struct platform_device *pdev)
> > @@ -1754,6 +1762,28 @@ static struct platform_driver qcom_slim_ngd_driver = {
> >  	},
> >  };
> >  
> > -module_platform_driver(qcom_slim_ngd_ctrl_driver);
> > +static int qcom_slim_ngd_init(void)
> > +{
> > +	int ret;
> > +
> > +	ret = platform_driver_register(&qcom_slim_ngd_ctrl_driver);
> > +	if (ret)
> > +		return ret;
> > +
> > +	ret = platform_driver_register(&qcom_slim_ngd_driver);
> > +	if (ret)
> > +		platform_driver_unregister(&qcom_slim_ngd_ctrl_driver);
> > +
> > +	return ret;
> > +}
> > +
> > +static void qcom_slim_ngd_exit(void)
> > +{
> > +	platform_driver_unregister(&qcom_slim_ngd_driver);
> > +	platform_driver_unregister(&qcom_slim_ngd_ctrl_driver);
> > +}
> > +
> > +module_init(qcom_slim_ngd_init);
> > +module_exit(qcom_slim_ngd_exit);
> >  MODULE_LICENSE("GPL v2");
> >  MODULE_DESCRIPTION("Qualcomm SLIMBus NGD controller");
> > 
> > -- 
> > 2.51.0
> > 
> 
> -- 
> -Mukesh Ojha

  reply	other threads:[~2026-04-01  3:06 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-10  4:09 [PATCH 0/7] slimbus: qcom-ngd-ctrl: Fix some race conditions and deadlocks Bjorn Andersson
2026-03-10  4:09 ` [PATCH 1/7] slimbus: qcom-ngd-ctrl: Fix up platform_driver registration Bjorn Andersson
2026-03-10  7:33   ` Mukesh Ojha
2026-04-01  3:06     ` Bjorn Andersson [this message]
2026-03-11  1:30   ` Dmitry Baryshkov
2026-03-10  4:09 ` [PATCH 2/7] slimbus: qcom-ngd-ctrl: Fix probe error path ordering Bjorn Andersson
2026-03-10  7:36   ` Mukesh Ojha
2026-03-11  1:30   ` Dmitry Baryshkov
2026-03-10  4:09 ` [PATCH 3/7] slimbus: qcom-ngd-ctrl: Correct PDR and SSR cleanup ownership Bjorn Andersson
2026-03-10  7:39   ` Mukesh Ojha
2026-03-24  2:36     ` Bjorn Andersson
2026-03-24  6:32       ` Mukesh Ojha
2026-03-11  1:32   ` Dmitry Baryshkov
2026-03-10  4:09 ` [PATCH 4/7] slimbus: qcom-ngd-ctrl: Register callbacks after creating the ngd Bjorn Andersson
2026-03-10  7:49   ` Mukesh Ojha
2026-03-11  1:45   ` Dmitry Baryshkov
2026-03-10  4:09 ` [PATCH 5/7] slimbus: qcom-ngd-ctrl: Initialize controller resources in controller Bjorn Andersson
2026-03-10  7:54   ` Mukesh Ojha
2026-03-11  1:34   ` Dmitry Baryshkov
2026-03-10  4:09 ` [PATCH 6/7] slimbus: qcom-ngd-ctrl: Balance pm_runtime enablement for NGD Bjorn Andersson
2026-03-10  8:00   ` Mukesh Ojha
2026-03-31 22:59     ` Bjorn Andersson
2026-03-11  1:34   ` Dmitry Baryshkov
2026-03-31 22:54     ` Bjorn Andersson
2026-03-10  4:09 ` [PATCH 7/7] slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl->lock Bjorn Andersson
2026-03-10 10:03   ` Mukesh Ojha
2026-03-11  0:06     ` Bjorn Andersson
2026-03-11  1:37   ` Dmitry Baryshkov
2026-03-31 22:45     ` Bjorn Andersson
2026-03-11  1:40 ` [PATCH 0/7] slimbus: qcom-ngd-ctrl: Fix some race conditions and deadlocks Dmitry Baryshkov
2026-04-01  2:54   ` Bjorn Andersson
  -- strict thread matches above, loose matches on Subject: below --
2026-03-13 12:36 [PATCH 1/7] slimbus: qcom-ngd-ctrl: Fix up platform_driver registration Tj
2026-03-31 22:32 ` Bjorn Andersson

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=acyLI4FWUOue6cFL@baldur \
    --to=andersson@kernel.org \
    --cc=bjorn.andersson@oss.qualcomm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzk@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=mukesh.ojha@oss.qualcomm.com \
    --cc=srini@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.