All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Sergio M. Iglesias" <sergio@lony.xyz>
Cc: bhelgaas@google.com, lorenzo.pieralisi@arm.com, robh@kernel.org,
	kw@linux.com, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: About the "__refdata" tag in pci-keystone.c
Date: Mon, 27 Sep 2021 10:31:28 -0500	[thread overview]
Message-ID: <20210927153128.GA646260@bhelgaas> (raw)
In-Reply-To: <20210927103321.v4kod7xfiv5sreet@lony.xyz>

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.

Bjorn

  reply	other threads:[~2021-09-27 15:31 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 [this message]
2021-09-29 13:23   ` Rob Herring

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=20210927153128.GA646260@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=kw@linux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=robh@kernel.org \
    --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.