From: Grant Grundler <grundler@parisc-linux.org>
To: Greg KH <greg@kroah.com>
Cc: Grant Grundler <grundler@parisc-linux.org>,
Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
linux-pci@atrey.karlin.mff.cuni.cz, Andrew Morton <akpm@osdl.org>,
e1000-devel@lists.sourceforge.net, linux-scsi@vger.kernel.org,
Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Subject: Re: [PATCH 1/5] Update Documentation/pci.txt
Date: Sun, 10 Dec 2006 00:25:08 -0700 [thread overview]
Message-ID: <20061210072508.GA12272@colo.lackof.org> (raw)
In-Reply-To: <20061206072651.GG17199@kroah.com>
On Tue, Dec 05, 2006 at 11:26:51PM -0800, Greg KH wrote:
...
> I do have a few minor comments:
...
> > Please mark the initialization and cleanup functions where appropriate
> > (the corresponding macros are defined in <linux/init.h>):
> >
> > __init Initialization code. Thrown away after the driver
> > initializes.
> > __exit Exit code. Ignored for non-modular drivers.
> > __devinit Device initialization code. Identical to __init if
> > the kernel is not compiled with CONFIG_HOTPLUG, normal
> > function otherwise.
> > __devexit The same for __exit.
> >
> > Tips on marks:
> > o The module_init()/module_exit() functions (and all initialization
> > functions called _only_ from these) should be marked __init/__exit.
> >
> > o The struct pci_driver shouldn't be marked with any of these tags.
> >
> > o The ID table array should be marked __devinitdata.
> >
> > o The probe() and remove() functions (and all initialization
> > functions called only from these) should be marked __devinit
> > and __devexit.
> >
> > o If the driver is not a hotplug driver then use only
> > __init/__exit and __initdata/__exitdata.
>
> No, don't say this, pci drivers are not "hotplug drivers",
agreed - removed that bullet item.
> and since CONFIG_HOTPLUG is really hard to turn off these days,
> don't confuse people with the devinit stuff. Everyone gets it wrong...
While revisiting this bit, I started thinking:
o While I agree HOTPLUG is essential to desktop and server,
I don't think that's true for "embedded" (e.g. routers/switches).
o drivers should use __dev* exactly because HOTPLUG is defined.
o Why does everyone get __dev* wrong? Bad API? Missing or bad Documentation?
[ This is not a free-for-all...I'd like a clear answer from
Greg what would help driver writers get this right. ]
o Prefer a seperate patch to clean this up?
Take what I have for now and sort out the __devinit handling in
another round?
o Note what I have is essentially the original text - just reformatted
to be a bit more readable.
o Hrm...what did greg mean with "it"? All of the markers?
Or just the __dev* markers?
> > o Pointers to functions marked as __devexit must be created using
> > __devexit_p(function_name). That will generate the function
> > name or NULL if the __devexit function will be discarded.
>
> I really recommend just not using any of these for almost all PCI
> drivers, as the space savings just really isn't there...
It's a bit too late for that, no?
And even if it's more of a PITA than it's worth, we do save something:
# hppa64-linux-gnu-readelf -S vmlinux
...
[26] .init.text PROGBITS 0000000040598000 00457000
0000000000022280 0000000000000000 AX 0 0 8
[27] .init.data PROGBITS 00000000405ba280 00479280
000000000001faf0 0000000000000000 WA 0 0 8
...
Reality is they are used in _alot_ of drivers.
I checked 2.6.19:
grundler <514>find -name \*.c | xargs fgrep __devinit | wc
2723 16812 235863
I'd prefer to keep the short references here if you
don't mind too much. At least until you can get some
consensus that __init and __exit should go away
or get replaced by easier-to-get-right markers.
thanks,
grant
next prev parent reply other threads:[~2006-12-10 7:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-22 8:05 [PATCH 1/5] Update Documentation/pci.txt Hidetoshi Seto
2006-11-22 8:05 ` Hidetoshi Seto
2006-11-22 8:54 ` Arjan van de Ven
2006-11-22 18:28 ` Grant Grundler
2006-11-22 18:28 ` Grant Grundler
2006-11-24 0:38 ` Hidetoshi Seto
2006-11-24 0:38 ` Hidetoshi Seto
2006-11-24 5:12 ` Grant Grundler
2006-11-24 5:12 ` Grant Grundler
2006-11-24 6:05 ` Hidetoshi Seto
2006-11-24 6:05 ` Hidetoshi Seto
2006-12-06 7:26 ` Greg KH
2006-12-07 3:55 ` Grant Grundler
2006-12-07 3:55 ` Grant Grundler
2006-12-10 7:25 ` Grant Grundler [this message]
2006-12-15 17:02 ` Greg KH
2006-12-15 17:02 ` Greg KH
2006-12-18 7:11 ` Grant Grundler
2006-12-18 7:11 ` Grant Grundler
2006-12-22 19:46 ` Randy Dunlap
2006-12-22 19:46 ` Randy Dunlap
2006-12-22 21:52 ` Stefan Richter
2006-12-22 21:52 ` Stefan Richter
2006-12-24 6:11 ` Grant Grundler
2006-12-24 6:07 ` [PATCH] Update Documentation/pci.txt v7 Grant Grundler
2006-12-24 19:16 ` Randy Dunlap
2006-12-25 7:59 ` Grant Grundler
2006-12-25 8:06 ` Grant Grundler
2006-12-25 8:08 ` Grant Grundler
2007-01-02 21:45 ` Greg KH
2007-01-03 7:15 ` Grant Grundler
2006-12-25 9:04 ` Kenji Kaneshige
2007-01-16 22:26 ` patch pci-rework-documentation-pci.txt.patch added to gregkh-2.6 tree gregkh
2007-01-17 9:10 ` Jiri Slaby
2007-01-17 19:21 ` 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=20061210072508.GA12272@colo.lackof.org \
--to=grundler@parisc-linux.org \
--cc=akpm@osdl.org \
--cc=e1000-devel@lists.sourceforge.net \
--cc=greg@kroah.com \
--cc=kaneshige.kenji@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=linux-scsi@vger.kernel.org \
--cc=seto.hidetoshi@jp.fujitsu.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.