All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Sergio M. Iglesias" <sergio@lony.xyz>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Krzysztof Wilczynski <kw@linux.com>,
	PCI <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: About the "__refdata" tag in pci-keystone.c
Date: Wed, 29 Sep 2021 08:23:57 -0500	[thread overview]
Message-ID: <CAL_JsqLjpe94EGx2fmVmcoXniRMnQ16+RKcYATub4cm0TPF0gw@mail.gmail.com> (raw)
In-Reply-To: <20210927153128.GA646260@bhelgaas>

On Mon, Sep 27, 2021 at 10:31 AM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> On Mon, Sep 27, 2021 at 12:33:21PM +0200, Sergio M. Iglesias wrote:
> > Hello!
> >
> > I have checked the "__refdata" tag that appears in the file
> > "drivers/pci/controller/dwc/pci-keystone.c" and it is needed. The tag has
> > been there since the creation of the file on commit 6e0832fa432e and
> > nothing has changed since that would make it redundant.
> >
> > The reason it is needed is because the struct references "ks_pcie_probe",
> > which is a function tagged as "__init", so the compiler will most likely
> > complain about the "__refdata" being removed.
> >
> > Should I send a patch to add a comment explaining why it is a necessary
> > tag as recommended in "include/linux/init.h"?
> > > [...] so optimally document why the __ref is needed and why it's OK).
>
> Thanks a lot for looking into this.
>
> I'm not yet convinced that either the __init or the __refdata is
> necessary.  If there is a reason, it would not be "to silence a
> compiler complaint"; it would be something like "the keystone platform
> is different from all the other platforms because the other platforms
> support X but keystone does not."
>
> Also, there are a couple other .probe() functions that are marked
> __init:
>
>   $ git grep "static int .*_pci.*_probe" drivers/pci | grep __init
>   drivers/pci/controller/dwc/pci-keystone.c:static int __init ks_pcie_probe(struct platform_device *pdev)
>   drivers/pci/controller/dwc/pci-layerscape-ep.c:static int __init ls_pcie_ep_probe(struct platform_device *pdev)
>   drivers/pci/controller/mobiveil/pcie-layerscape-gen4.c:static int __init ls_pcie_g4_probe(struct platform_device *pdev)
>   drivers/pci/controller/pci-ixp4xx.c:static int __init ixp4xx_pci_probe(struct platform_device *pdev)
>
> and their platform_driver structs are not marked __refdata:
>
>   $ git grep "static struct platform_driver" drivers/pci | grep __refdata
>   drivers/pci/controller/dwc/pci-keystone.c:static struct platform_driver ks_pcie_driver __refdata = {
>
> I think this should all be more consistent: either all these __init
> and __refdata annotations should be removed, or they should be used by
> many more drivers.

__init should definitely be removed. There's no guarantee that probe
completes before init memory is freed even for built-in drivers.

Rob

      reply	other threads:[~2021-09-29 13:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27 10:33 About the "__refdata" tag in pci-keystone.c Sergio M. Iglesias
2021-09-27 15:31 ` Bjorn Helgaas
2021-09-29 13:23   ` Rob Herring [this message]

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=CAL_JsqLjpe94EGx2fmVmcoXniRMnQ16+RKcYATub4cm0TPF0gw@mail.gmail.com \
    --to=robh@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=helgaas@kernel.org \
    --cc=kw@linux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=sergio@lony.xyz \
    /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.