All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Murali Nalajala <mnalajal@codeaurora.org>,
	rafael@kernel.org, linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH] base: soc: Export soc_device_to_device API
Date: Thu, 19 Sep 2019 15:40:17 -0700	[thread overview]
Message-ID: <20190919224017.GB63675@minitux> (raw)
In-Reply-To: <20190919222525.GA445429@kroah.com>

On Thu 19 Sep 15:25 PDT 2019, Greg KH wrote:

> On Thu, Sep 19, 2019 at 03:14:56PM -0700, Bjorn Andersson wrote:
> > On Thu 19 Sep 14:58 PDT 2019, Greg KH wrote:
> > 
> > > On Thu, Sep 19, 2019 at 02:53:00PM -0700, Bjorn Andersson wrote:
> > > > On Thu 19 Sep 14:32 PDT 2019, Greg KH wrote:
> > > > 
> > > > > On Thu, Sep 19, 2019 at 02:13:44PM -0700, Murali Nalajala wrote:
> > > > > > If the soc drivers want to add custom sysfs entries it needs to
> > > > > > access "dev" field in "struct soc_device". This can be achieved
> > > > > > by "soc_device_to_device" API. Soc drivers which are built as a
> > > > > > module they need above API to be exported. Otherwise one can
> > > > > > observe compilation issues.
> > > > > > 
> > > > > > Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
> > > > > > ---
> > > > > >  drivers/base/soc.c | 1 +
> > > > > >  1 file changed, 1 insertion(+)
> > > > > > 
> > > > > > diff --git a/drivers/base/soc.c b/drivers/base/soc.c
> > > > > > index 7c0c5ca..4ad52f6 100644
> > > > > > --- a/drivers/base/soc.c
> > > > > > +++ b/drivers/base/soc.c
> > > > > > @@ -41,6 +41,7 @@ struct device *soc_device_to_device(struct soc_device *soc_dev)
> > > > > >  {
> > > > > >  	return &soc_dev->dev;
> > > > > >  }
> > > > > > +EXPORT_SYMBOL_GPL(soc_device_to_device);
> > > > > >  
> > > > > >  static umode_t soc_attribute_mode(struct kobject *kobj,
> > > > > >  				struct attribute *attr,
> > > > > 
> > > > > What in-kernel driver needs this?
> > > > > 
> > > > 
> > > > Half of the drivers interacting with the soc driver calls this API,
> > > > several of these I see no reason for being builtin (e.g.
> > > > ux500 andversatile). So I think this patch makes sense to allow us to
> > > > build these as modules.
> > > > 
> > > > > Is linux-next breaking without this?
> > > > > 
> > > > 
> > > > No, we postponed the addition of any sysfs attributes in the Qualcomm
> > > > socinfo driver.
> > > > 
> > > > > We don't export things unless we have a user of the export.
> > > > > 
> > > > > Also, adding "custom" sysfs attributes is almost always not the correct
> > > > > thing to do at all.  The driver should be doing it, by setting up the
> > > > > attribute group properly so that the driver core can do it automatically
> > > > > for it.
> > > > > 
> > > > > No driver should be doing individual add/remove of sysfs files.  If it
> > > > > does so, it is almost guaranteed to be doing it incorrectly and racing
> > > > > userspace.
> > > > > 
> > > > 
> > > > The problem here is that the attributes are expected to be attached to
> > > > the soc driver, which is separate from the platform-specific drivers. So
> > > > there's no way to do platform specific attributes the right way.
> > > > 
> > > > > And yes, there's loads of in-kernel examples of doing this wrong, I've
> > > > > been working on fixing that up, look at the patches now in Linus's tree
> > > > > for platform and USB drivers that do this as examples of how to do it
> > > > > right.
> > > > > 
> > > > 
> > > > Agreed, this patch should not be used as an approval for any crazy
> > > > attributes; but it's necessary in order to extend the soc device's
> > > > attributes, per the current design.
> > > 
> > > Wait, no, let's not let the "current design" remain if it is broken!
> > > 
> > > Why can't the soc driver handle the attributes properly so that the
> > > individual driver doesn't have to do the create/remove?
> > > 
> > 
> > The custom attributes that these drivers want to add to the common ones
> > are known in advance, so I presume we could have them passed into
> > soc_device_register() and registered together with the common
> > attributes...
> > 
> > It sounds like it's worth a prototype.
> 
> Do you have an in-kernel example I can look at to get an idea of what is
> needed here?
> 

realview_soc_probe(), in drivers/soc/versatile/soc-realview.c,
implements the current mechanism of acquiring the soc's struct device
and then issuing a few device_create_file calls on that.

Regards,
Bjorn

  reply	other threads:[~2019-09-19 22:40 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-19 21:13 [PATCH] base: soc: Export soc_device_to_device API Murali Nalajala
2019-09-19 21:32 ` Greg KH
2019-09-19 21:53   ` Bjorn Andersson
2019-09-19 21:58     ` Greg KH
2019-09-19 22:14       ` Bjorn Andersson
2019-09-19 22:25         ` Greg KH
2019-09-19 22:40           ` Bjorn Andersson [this message]
2019-09-19 22:45             ` Greg KH
2019-09-19 23:39               ` mnalajal
2019-09-20  3:36               ` Bjorn Andersson
2019-09-20  6:10                 ` Greg KH
2019-09-23 21:35                   ` mnalajal
2019-09-24  4:50                     ` Greg KH
2019-09-26 14:33                       ` mnalajal
2019-09-27  5:46                         ` Greg KH
2019-09-19 22:27       ` mnalajal
2019-09-19 22:46         ` Greg KH

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=20190919224017.GB63675@minitux \
    --to=bjorn.andersson@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mnalajal@codeaurora.org \
    --cc=rafael@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.