All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David E. Box" <david.e.box@linux.intel.com>
To: Greg KH <gregkh@linuxfoundation.org>, lee.jones@linaro.org
Cc: hdegoede@redhat.com, mgross@linux.intel.com,
	andriy.shevchenko@linux.intel.com, srinivas.pandruvada@intel.com,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH 2/2] platform/x86: Add Intel Software Defined Silicon driver
Date: Sun, 26 Sep 2021 18:15:16 -0700	[thread overview]
Message-ID: <3392aea6b112926b063bbe46b1decaad4c9f9e6e.camel@linux.intel.com> (raw)
In-Reply-To: <YU7BPIH123HUZKhw@kroah.com>

On Sat, 2021-09-25 at 08:27 +0200, Greg KH wrote:
> On Fri, Sep 24, 2021 at 02:31:57PM -0700, David E. Box wrote:
> 
> Quick review:
> 
> > +static int sdsi_probe(struct platform_device *pdev)
> > +{
> > +       void __iomem *disc_addr;
> > +       struct sdsi_priv *priv;
> > +       int ret;
> > +
> > +       disc_addr = devm_platform_ioremap_resource(pdev, 0);
> > +       if (IS_ERR(disc_addr))
> > +               return PTR_ERR(disc_addr);
> > +
> > +       priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> > +       if (!priv)
> > +               return -ENOMEM;
> > +
> > +       kref_init(&priv->kref);
> > +
> > +       platform_set_drvdata(pdev, priv);
> > +       priv->pdev = pdev;
> > +       mutex_init(&priv->mb_lock);
> > +       mutex_init(&priv->akc_lock);
> > +
> > +       memcpy_fromio(&priv->disc_table, disc_addr, DISC_TABLE_SIZE);
> > +
> > +       ret = sdsi_map_sdsi_registers(pdev);
> > +       if (ret)
> > +               goto put_kref;
> > +
> > +       ret = sdsi_create_misc_device(pdev);
> > +       if (ret)
> > +               goto put_kref;
> > +
> > +       ret = sdsi_add_bin_attrs(pdev);
> 
> You just raced with userspace and lost.  Please attach your attributes
> to the misc device before registering it.
> 
> Also, you need a Documentation/ABI/ entry for your new sysfs file(s).

Ack

> 
> > +       if (ret)
> > +               goto deregister_misc;
> > +
> > +       priv->dev_present = true;
> > +
> > +       return 0;
> > +
> > +deregister_misc:
> > +       misc_deregister(&priv->miscdev);
> > +put_kref:
> > +       kref_put(&priv->kref, sdsi_priv_release);
> > +
> > +       return ret;
> > +}
> > +
> > +static int sdsi_remove(struct platform_device *pdev)
> > +{
> > +       struct sdsi_priv *priv = platform_get_drvdata(pdev);
> > +
> > +       priv->dev_present = false;
> > +       sysfs_remove_bin_file(&priv->pdev->dev.kobj, &priv->registers_bin_attr);
> > +       misc_deregister(&priv->miscdev);
> > +       kref_put(&priv->kref, sdsi_priv_release);
> 
> Why do you need a kref for a structure that already can be controlled by
> a different lifetime rule?

Which rule am I missing? This kref allows the structure to remain in case the device is removed
while the file is open.

> 
> > +
> > +       return 0;
> > +}
> > +
> > +static struct platform_driver sdsi_driver = {
> > +       .driver = {
> > +               .name           = SDSI_DEV_NAME,
> > +               .dev_groups     = sdsi_groups,
> > +       },
> > +       .probe  = sdsi_probe,
> > +       .remove = sdsi_remove,
> > +};
> > +module_platform_driver(sdsi_driver);
> 
> What causes the platform to know to register, and enable, this platform
> driver?  Shouldn't there be some hardware involved that is discoverable
> to enable it to load dynamically?

Ah. The patch that adds the SDSi platform device string was added to a series for the intel_pmt MFD
driver and it's still waiting review. I see that complicates things. I can combine the two series
together.

David

> 
> thanks,
> 
> greg k-h



  reply	other threads:[~2021-09-27  1:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-24 21:31 [PATCH 1/2] Documentation: Update ioctl-number.rst for Intel Software Defined Silicon interface David E. Box
2021-09-24 21:31 ` [PATCH 2/2] platform/x86: Add Intel Software Defined Silicon driver David E. Box
2021-09-25  6:27   ` Greg KH
2021-09-27  1:15     ` David E. Box [this message]
2021-09-27  4:03       ` Greg KH
2021-09-27 17:53         ` David E. Box
2021-09-28  4:48           ` Greg KH
2021-09-27  4:04       ` Greg KH
2021-09-27 17:27         ` David E. Box
2021-09-27 17:36           ` Greg KH
2021-09-25 14: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=3392aea6b112926b063bbe46b1decaad4c9f9e6e.camel@linux.intel.com \
    --to=david.e.box@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgross@linux.intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=srinivas.pandruvada@intel.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.