LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* [PATCH] el3_common_init() should be __devinit, not __init @ 2008-11-01 18:20 Al Viro 2008-11-01 19:12 ` Alexey Dobriyan 2008-11-06 5:42 ` Jeff Garzik 0 siblings, 2 replies; 10+ messages in thread From: Al Viro @ 2008-11-01 18:20 UTC (permalink / raw) To: torvalds; +Cc: linux-kernel, jgarzik Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> --- drivers/net/3c509.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c index 3a7bc52..c7a4f3b 100644 --- a/drivers/net/3c509.c +++ b/drivers/net/3c509.c @@ -94,7 +94,7 @@ #include <asm/io.h> #include <asm/irq.h> -static char version[] __initdata = DRV_NAME ".c:" DRV_VERSION " " DRV_RELDATE " becker@scyld.com\n"; +static char version[] __devinitdata = DRV_NAME ".c:" DRV_VERSION " " DRV_RELDATE " becker@scyld.com\n"; #ifdef EL3_DEBUG static int el3_debug = EL3_DEBUG; @@ -186,7 +186,7 @@ static int max_interrupt_work = 10; static int nopnp; #endif -static int __init el3_common_init(struct net_device *dev); +static int __devinit el3_common_init(struct net_device *dev); static void el3_common_remove(struct net_device *dev); static ushort id_read_eeprom(int index); static ushort read_eeprom(int ioaddr, int index); @@ -537,7 +537,7 @@ static struct mca_driver el3_mca_driver = { static int mca_registered; #endif /* CONFIG_MCA */ -static int __init el3_common_init(struct net_device *dev) +static int __devinit el3_common_init(struct net_device *dev) { struct el3_private *lp = netdev_priv(dev); int err; -- 1.5.6.5 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 18:20 [PATCH] el3_common_init() should be __devinit, not __init Al Viro @ 2008-11-01 19:12 ` Alexey Dobriyan 2008-11-01 19:16 ` Al Viro 2008-11-06 5:42 ` Jeff Garzik 1 sibling, 1 reply; 10+ messages in thread From: Alexey Dobriyan @ 2008-11-01 19:12 UTC (permalink / raw) To: Al Viro; +Cc: torvalds, linux-kernel, jgarzik On Sat, Nov 01, 2008 at 06:20:19PM +0000, Al Viro wrote: > -static int __init el3_common_init(struct net_device *dev) > +static int __devinit el3_common_init(struct net_device *dev) Al, here is much better patch: --- a/include/linux/init.h +++ b/include/linux/init.h @@ -83,20 +83,20 @@ #define __exit __section(.exit.text) __exitused __cold /* Used for HOTPLUG */ -#define __devinit __section(.devinit.text) __cold -#define __devinitdata __section(.devinit.data) -#define __devinitconst __section(.devinit.rodata) -#define __devexit __section(.devexit.text) __exitused __cold -#define __devexitdata __section(.devexit.data) -#define __devexitconst __section(.devexit.rodata) +#define __devinit __cold +#define __devinitdata +#define __devinitconst +#define __devexit __exitused __cold +#define __devexitdata +#define __devexitconst /* Used for HOTPLUG_CPU */ -#define __cpuinit __section(.cpuinit.text) __cold -#define __cpuinitdata __section(.cpuinit.data) -#define __cpuinitconst __section(.cpuinit.rodata) -#define __cpuexit __section(.cpuexit.text) __exitused __cold -#define __cpuexitdata __section(.cpuexit.data) -#define __cpuexitconst __section(.cpuexit.rodata) +#define __cpuinit __cold +#define __cpuinitdata +#define __cpuinitconst +#define __cpuexit __cold +#define __cpuexitdata +#define __cpuexitconst /* Used for MEMORY_HOTPLUG */ #define __meminit __section(.meminit.text) __cold @@ -115,13 +115,13 @@ #define __INITRODATA .section ".init.rodata","a" #define __FINITDATA .previous -#define __DEVINIT .section ".devinit.text", "ax" -#define __DEVINITDATA .section ".devinit.data", "aw" -#define __DEVINITRODATA .section ".devinit.rodata", "a" +#define __DEVINIT +#define __DEVINITDATA +#define __DEVINITRODATA -#define __CPUINIT .section ".cpuinit.text", "ax" -#define __CPUINITDATA .section ".cpuinit.data", "aw" -#define __CPUINITRODATA .section ".cpuinit.rodata", "a" +#define __CPUINIT +#define __CPUINITDATA +#define __CPUINITRODATA #define __MEMINIT .section ".meminit.text", "ax" #define __MEMINITDATA .section ".meminit.data", "aw" ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 19:12 ` Alexey Dobriyan @ 2008-11-01 19:16 ` Al Viro 2008-11-01 19:27 ` Alexey Dobriyan 0 siblings, 1 reply; 10+ messages in thread From: Al Viro @ 2008-11-01 19:16 UTC (permalink / raw) To: Alexey Dobriyan; +Cc: Al Viro, torvalds, linux-kernel, jgarzik On Sat, Nov 01, 2008 at 10:12:50PM +0300, Alexey Dobriyan wrote: > On Sat, Nov 01, 2008 at 06:20:19PM +0000, Al Viro wrote: > > -static int __init el3_common_init(struct net_device *dev) > > +static int __devinit el3_common_init(struct net_device *dev) > > Al, here is much better patch: [essentially kill devinit/cpuinit] What the hell makes it better? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 19:16 ` Al Viro @ 2008-11-01 19:27 ` Alexey Dobriyan 2008-11-01 19:32 ` Al Viro 2008-11-01 21:17 ` Sam Ravnborg 0 siblings, 2 replies; 10+ messages in thread From: Alexey Dobriyan @ 2008-11-01 19:27 UTC (permalink / raw) To: Al Viro; +Cc: Al Viro, torvalds, linux-kernel, jgarzik On Sat, Nov 01, 2008 at 07:16:14PM +0000, Al Viro wrote: > On Sat, Nov 01, 2008 at 10:12:50PM +0300, Alexey Dobriyan wrote: > > On Sat, Nov 01, 2008 at 06:20:19PM +0000, Al Viro wrote: > > > -static int __init el3_common_init(struct net_device *dev) > > > +static int __devinit el3_common_init(struct net_device *dev) > > > > Al, here is much better patch: > > [essentially kill devinit/cpuinit] > > What the hell makes it better? Wasting efforts for too little gain? More or less every distro enables HOTPLUG and HOTPLUG_CPU. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 19:27 ` Alexey Dobriyan @ 2008-11-01 19:32 ` Al Viro 2008-11-01 21:17 ` Sam Ravnborg 1 sibling, 0 replies; 10+ messages in thread From: Al Viro @ 2008-11-01 19:32 UTC (permalink / raw) To: Alexey Dobriyan; +Cc: Al Viro, torvalds, linux-kernel, jgarzik On Sat, Nov 01, 2008 at 10:27:57PM +0300, Alexey Dobriyan wrote: > On Sat, Nov 01, 2008 at 07:16:14PM +0000, Al Viro wrote: > > On Sat, Nov 01, 2008 at 10:12:50PM +0300, Alexey Dobriyan wrote: > > > On Sat, Nov 01, 2008 at 06:20:19PM +0000, Al Viro wrote: > > > > -static int __init el3_common_init(struct net_device *dev) > > > > +static int __devinit el3_common_init(struct net_device *dev) > > > > > > Al, here is much better patch: > > > > [essentially kill devinit/cpuinit] > > > > What the hell makes it better? > > Wasting efforts for too little gain? > > More or less every distro enables HOTPLUG and HOTPLUG_CPU. More or less every distro shits udev and hald; it's not a reason to make the corrsponding stuff in the kernel mandatory. The same applies here... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 19:27 ` Alexey Dobriyan 2008-11-01 19:32 ` Al Viro @ 2008-11-01 21:17 ` Sam Ravnborg 2008-11-02 18:13 ` Linus Torvalds 1 sibling, 1 reply; 10+ messages in thread From: Sam Ravnborg @ 2008-11-01 21:17 UTC (permalink / raw) To: Alexey Dobriyan; +Cc: Al Viro, Al Viro, torvalds, linux-kernel, jgarzik On Sat, Nov 01, 2008 at 10:27:57PM +0300, Alexey Dobriyan wrote: > On Sat, Nov 01, 2008 at 07:16:14PM +0000, Al Viro wrote: > > On Sat, Nov 01, 2008 at 10:12:50PM +0300, Alexey Dobriyan wrote: > > > On Sat, Nov 01, 2008 at 06:20:19PM +0000, Al Viro wrote: > > > > -static int __init el3_common_init(struct net_device *dev) > > > > +static int __devinit el3_common_init(struct net_device *dev) > > > > > > Al, here is much better patch: > > > > [essentially kill devinit/cpuinit] > > > > What the hell makes it better? > > Wasting efforts for too little gain? And what is the wasted gain - numbers please. And please come up with relevant numbers for a number of embedded configs. The normal desktop/server usage does not count here. For cpuinit/cpuexit the gain turned out to be minimal. But I have so far seen _zero_ numbers on the real gain for devinit/devexit and meminit/memexit. Sam ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 21:17 ` Sam Ravnborg @ 2008-11-02 18:13 ` Linus Torvalds 2008-11-02 18:47 ` Al Viro 2008-11-02 20:31 ` Sam Ravnborg 0 siblings, 2 replies; 10+ messages in thread From: Linus Torvalds @ 2008-11-02 18:13 UTC (permalink / raw) To: Sam Ravnborg; +Cc: Alexey Dobriyan, Al Viro, Al Viro, linux-kernel, jgarzik On Sat, 1 Nov 2008, Sam Ravnborg wrote: > > For cpuinit/cpuexit the gain turned out to be minimal. Quite frankly, I'm not convinced. Yeah, yeah, most distro's end up always enabling CPU hotplug due to suspend/resume, but: - desktop PC's aren't where most memory pressures are anyway - on UP, CONFIG_HOTPLUG_CPU isn't on even if you do have suspend/resume - we should still care about embedded devices, and while some of them are growing up (and having SMP and not caring about a few tens of kB of memory), I don't think that's a valid argument for the other ones. So. I'd rather we try to keep our init sections, and continue to spend effort on fixing them. If at all possible. Linus ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-02 18:13 ` Linus Torvalds @ 2008-11-02 18:47 ` Al Viro 2008-11-02 20:31 ` Sam Ravnborg 1 sibling, 0 replies; 10+ messages in thread From: Al Viro @ 2008-11-02 18:47 UTC (permalink / raw) To: Linus Torvalds Cc: Sam Ravnborg, Alexey Dobriyan, Al Viro, linux-kernel, jgarzik On Sun, Nov 02, 2008 at 10:13:03AM -0800, Linus Torvalds wrote: > > > On Sat, 1 Nov 2008, Sam Ravnborg wrote: > > > > For cpuinit/cpuexit the gain turned out to be minimal. > > Quite frankly, I'm not convinced. > > Yeah, yeah, most distro's end up always enabling CPU hotplug due to > suspend/resume, but: > > - desktop PC's aren't where most memory pressures are anyway > > - on UP, CONFIG_HOTPLUG_CPU isn't on even if you do have suspend/resume > > - we should still care about embedded devices, and while some of them are > growing up (and having SMP and not caring about a few tens of kB of > memory), I don't think that's a valid argument for the other ones. > > So. I'd rather we try to keep our init sections, and continue to spend > effort on fixing them. If at all possible. FWIW, I've tweaked that stuff yesterday for a while. Results so far: alpha, arm[*], s390, s390x, uml - all down to zero section conflicts; amd64 (UP and SMP) - one conflict, and it looks like a real issue. i386 - same + one false positive. sparc32 - one potential real issue (cpuinit, BTW) sparc64 - one conflict, again likely to be a real problem m68k - 3 conflicts, one of them looking like a real bug m32r - 4 conflicts, by the look of it boiling down to single misannotation ppc, ppc64, ia64 - 7--10 conflicts on each, hadn't looked into them yet. That - from one afternoon of hacking. And I'm yet to look at ppc/ppc64/ia64; I would be very surprised if these didn't have low-hanging fruits. [*] 2 arm configs I have sitting around - didn't do all subarchitectures. Now, what we *really* ought to do is taking that crap to sparse where it really can be handled sanely, without "variable name ends on magical string '_shp', so we won't complain about pointers to .init.text anywhere in it" kind of "logics". What we need is something along the lines of "->probe() in pci_driver can be in .devinit.text and it can be called only if...". Which is much, _much_ easier for sparse to handle. We need to figure out what to do with *.S, but other than that... this is really not a job for modpost. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-02 18:13 ` Linus Torvalds 2008-11-02 18:47 ` Al Viro @ 2008-11-02 20:31 ` Sam Ravnborg 1 sibling, 0 replies; 10+ messages in thread From: Sam Ravnborg @ 2008-11-02 20:31 UTC (permalink / raw) To: Linus Torvalds; +Cc: Alexey Dobriyan, Al Viro, Al Viro, linux-kernel, jgarzik On Sun, Nov 02, 2008 at 10:13:03AM -0800, Linus Torvalds wrote: > > > On Sat, 1 Nov 2008, Sam Ravnborg wrote: > > > > For cpuinit/cpuexit the gain turned out to be minimal. > > Quite frankly, I'm not convinced. > > Yeah, yeah, most distro's end up always enabling CPU hotplug due to > suspend/resume, but: > > - desktop PC's aren't where most memory pressures are anyway > > - on UP, CONFIG_HOTPLUG_CPU isn't on even if you do have suspend/resume > > - we should still care about embedded devices, and while some of them are > growing up (and having SMP and not caring about a few tens of kB of > memory), I don't think that's a valid argument for the other ones. I benchmarked by investigating a common arm config and not some bloated x86 desktop config when analysing the cpuinit/cpuexit case. Another reason why I like to see cpuinit dropped is that it is misused all over. __cpuinit are used for two purposes: - to annotate code/data that is only used in the early init phase if HOTPLUG_CPU is not enabled - to annotate code/data that is only used if HOTPLUG_CPU is enabled The latter use is plain wrong but I never managed to really get to the bottom of it. If we could use our config ssytem in the normals ways to cover with code that is only used for HOTPLUG_CPU then things would be much simpler. When I have done sweep fixing all section mismatchs it has almost always been cpuinit that has caused me most troubles. The others has been trivial to deal with. As Al points out in his reply a full day effort can fix a lot of the remaining ones. For devinit/devexit there is in my mind no questions that they shall remain. The most important topic to address is to get better detection. What we can do in modpost is limited :-( Sam ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] el3_common_init() should be __devinit, not __init 2008-11-01 18:20 [PATCH] el3_common_init() should be __devinit, not __init Al Viro 2008-11-01 19:12 ` Alexey Dobriyan @ 2008-11-06 5:42 ` Jeff Garzik 1 sibling, 0 replies; 10+ messages in thread From: Jeff Garzik @ 2008-11-06 5:42 UTC (permalink / raw) To: Al Viro; +Cc: torvalds, linux-kernel Al Viro wrote: > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > --- > drivers/net/3c509.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) applied ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2008-11-06 5:43 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-11-01 18:20 [PATCH] el3_common_init() should be __devinit, not __init Al Viro 2008-11-01 19:12 ` Alexey Dobriyan 2008-11-01 19:16 ` Al Viro 2008-11-01 19:27 ` Alexey Dobriyan 2008-11-01 19:32 ` Al Viro 2008-11-01 21:17 ` Sam Ravnborg 2008-11-02 18:13 ` Linus Torvalds 2008-11-02 18:47 ` Al Viro 2008-11-02 20:31 ` Sam Ravnborg 2008-11-06 5:42 ` Jeff Garzik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).