RE: [PATCH RESEND] driver core: export device_is_bound() to fix build failure
From: Aisheng Dong
Date: Mon Nov 09 2020 - 05:57:11 EST
Hi Greg,
> From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Sent: Monday, November 9, 2020 6:37 PM
> Subject: Re: [PATCH RESEND] driver core: export device_is_bound() to fix build
> failure
>
> On Mon, Nov 09, 2020 at 10:14:46AM +0000, Sudip Mukherjee wrote:
> > Hi Greg,
> >
> > On Sun, Nov 8, 2020 at 8:23 AM Greg Kroah-Hartman
> > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > On Sat, Nov 07, 2020 at 10:47:27PM +0000, Sudip Mukherjee wrote:
> > > > When CONFIG_MXC_CLK_SCU is configured as 'm' the build fails as it
> > > > is unable to find device_is_bound(). The error being:
> > > > ERROR: modpost: "device_is_bound" [drivers/clk/imx/clk-imx-scu.ko]
> > > > undefined!
> > > >
> > > > Export the symbol so that the module finds it.
> > > >
> > > > Fixes: 77d8f3068c63 ("clk: imx: scu: add two cells binding
> > > > support")
> > > > Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx>
> > > > ---
> > > >
> > > > resending with the Fixes: tag.
> > > >
> > > > drivers/base/dd.c | 1 +
> > > > 1 file changed, 1 insertion(+)
> > > >
> > > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c index
> > > > 148e81969e04..a796a57e5efb 100644
> > > > --- a/drivers/base/dd.c
> > > > +++ b/drivers/base/dd.c
> > > > @@ -353,6 +353,7 @@ bool device_is_bound(struct device *dev) {
> > > > return dev->p && klist_node_attached(&dev->p->knode_driver);
> > > > }
> > > > +EXPORT_SYMBOL(device_is_bound);
> > >
> > > EXPORT_SYMBOL_GPL() please, like all the other exports in this file.
> > >
> > > Also, wait, no, don't call this, are you sure you are calling it in
> > > a race-free way? And what branch/tree is the above commit in?
> >
> > I have not checked fully but since it is being called from probe() I
> > assume the lock will be held at that time.
>
> probe() should never call this function as it makes no sense at all at that point in
> time. The driver should be fixed.
Would you suggest if any other API we can use to allow the driver to know whether
another device has been probed?
For imx scu driver in question, it has a special requirement that it depends on scu power domain
driver. However, there're a huge number (200+) of power domains for each device clock, we can't define
them all in DT for a single clock controller node.
That's why we wanted to use device_is_bound() before to check if scu power domain is ready or not to
support defer probe.
Regards
Aisheng
>
> This function should not be exported, sorry.
>
> thanks,
>
> greg k-h