From: Linus Torvalds <torvalds@linux-foundation.org>
To: Adrian Bunk <bunk@kernel.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
"Alan D. Brunelle" <Alan.Brunelle@hp.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Kernel Testers List <kernel-testers@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Arjan van de Ven <arjan@linux.intel.com>,
Ingo Molnar <mingo@elte.hu>,
linux-embedded@vger.kernel.org
Subject: Re: [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected
Date: Tue, 26 Aug 2008 13:41:43 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0808261332570.3363@nehalem.linux-foundation.org> (raw)
In-Reply-To: <20080826202134.GA11734@cs181140183.pp.htv.fi>
On Tue, 26 Aug 2008, Adrian Bunk wrote:
>
> I had in mind that we anyway have to support it for tiny kernels.
I actually don't think that is true.
If we really were to decide to be stricter about it, and it makes a big
size difference, we can probably also add a tool to warn about functions
that really should be inline.
> > Inlining really isn't the great tool some people think it is. Especially
> > not since gcc stack allocation is so horrid that it won't re-use stack
> > slots etc (which I don't disagree with per se - it's _hard_ to re-use
> > stack slots while still allowing code scheduling).
>
> gcc's stack allocation has become better
> (that's why we disable unit-at-a-time only for gcc 3.4 on i386).
I agree that it has become better. But it still absolutely *sucks*.
For example, see the patch I just posted about e1000 stack usage. Even
though the variables were all in completely separate scopes, they all got
individual space on the stack over the whole lifetime of the function,
causing an explosion of stack-space. As such, gcc used 500 bytes too much
of stack, just because it didn't re-use the stackspace.
That was with gcc-4.3.0, and no, there were hardly any inlining issues
involevd, although it is true that inlining actually did make it slightly
worse in that case too (but since it was essentially a leaf function, that
had little real life impact, since there were no deep callchains below it
to care).
So the fact is, "better" simply is not "good enough". We still need to do
a lot of optimizations _manually_, because gcc cannot see that it can
re-use the stack-slots.
And sometimes those "optimizations" are actually performance
pessimizations, because in order to make gcc not use all the stack at the
same time, you simply have to break things out and force-disable inlining.
> Most LOCs of the kernel are not written by people like you or Al Viro or
> David Miller, and the average kernel developer is unlikely to do it as
> good as gcc.
Sure. But we do have tools. We do have checkstack.pl, it's just that it
hasn't been an issue in a long time, so I suspect many people didn't even
_realize_ we have it, and I certainly can attest to the fact that even
people who remember it - like me - don't actually tend to run it all that
often.
> For the average driver the choice is realistically between
> "inline's randomly sprinkled across the driver" and
> "no inline's, leave it to gcc".
And neither is likely to be a big problem.
> BTW:
> I just ran checkstack on a (roughly) allyesconfig kernel, and we have a
> new driver that allocates "unsigned char recvbuf[1500];" on the stack...
Yeah, it's _way_ too easy to do bad things.
> With the "gcc inline's static functions" you complain about we have
> 4-5 years of experience.
Sure. And most of it isn't all that great.
But I do agree that lettign gcc make more decisions is _dangerous_.
However, in this case, at least, the decisions it makes would at least
make for less inlining, and thus less stack space explosion.
Linus
next prev parent reply other threads:[~2008-08-26 20:43 UTC|newest]
Thread overview: 222+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-23 18:07 2.6.27-rc4-git1: Reported regressions from 2.6.26 Rafael J. Wysocki
2008-08-23 18:07 ` [Bug #11141] no battery or DC status - Dell i1501 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11191] 2.6.26-git8: spinlock lockup in c1e_idle() Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11207] VolanoMark regression with 2.6.27-rc1 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11219] KVM modules break emergency reboot Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11215] INFO: possible recursive locking detected ps2_command Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11209] 2.6.27-rc1 process time accounting Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11210] libata badness Rafael J. Wysocki
2008-08-23 22:23 ` Jeff Garzik
2008-08-24 21:04 ` Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11220] Screen stays black after resume Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11230] Kconfig no longer outputs a .config with freshly updated defconfigs Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11237] corrupt PMD after resume Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11224] Only three cores found on quad-core machine Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11254] KVM: fix userspace ABI breakage Rafael J. Wysocki
2008-08-24 19:27 ` Adrian Bunk
2008-08-25 10:23 ` Avi Kivity
2008-08-23 18:10 ` [Bug #11264] Invalid op opcode in kernel/workqueue Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11271] BUG: fealnx in 2.6.27-rc1 Rafael J. Wysocki
2008-08-23 22:26 ` Jeff Garzik
2008-08-23 18:10 ` [Bug #11276] build error: CONFIG_OPTIMIZE_INLINING=y causes gcc 4.2 to do stupid things Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11272] BUG: parport_serial in 2.6.27-rc1 for NetMos Technology PCI 9835 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11279] 2.6.27-rc0 Power Bugs with HP/Compaq Laptops Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11282] Please fix x86 defconfig regression Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11335] 2.6.27-rc2-git5 BUG: unable to handle kernel paging request Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -> 2.6.28 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11336] 2.6.27-rc2:stall while mounting root fs Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11334] myri10ge: use ioremap_wc: compilation failure on ARM Rafael J. Wysocki
2008-08-24 12:26 ` Martin Michlmayr
2008-08-24 21:05 ` Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected Rafael J. Wysocki
2008-08-23 20:10 ` Linus Torvalds
2008-08-23 20:15 ` Arjan van de Ven
2008-08-25 12:07 ` Alan D. Brunelle
2008-08-23 20:17 ` Linus Torvalds
2008-08-25 12:03 ` Alan D. Brunelle
2008-08-25 12:22 ` Alan D. Brunelle
2008-08-25 18:00 ` Linus Torvalds
2008-08-25 18:09 ` Linus Torvalds
2008-08-25 20:19 ` Alan D. Brunelle
2008-08-25 20:43 ` Linus Torvalds
2008-08-25 20:45 ` Arjan van de Ven
2008-08-25 20:52 ` Linus Torvalds
2008-08-25 21:15 ` Linus Torvalds
2008-08-26 7:22 ` Ingo Molnar
2008-08-26 7:46 ` David Miller
2008-08-26 7:53 ` Ingo Molnar
2008-08-26 8:36 ` Yinghai Lu
2008-08-26 16:51 ` Linus Torvalds
2008-08-26 17:08 ` Yinghai Lu
2008-09-25 1:50 ` Rusty Russell
2008-09-25 8:55 ` Ingo Molnar
2008-09-25 15:42 ` Linus Torvalds
2008-09-25 20:59 ` Subject: [RFC 1/1] cpumask: Provide new cpumask API Mike Travis
2008-09-26 5:25 ` [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected Rusty Russell
2008-09-26 5:53 ` Mike Travis
2008-09-27 19:16 ` Ingo Molnar
2008-09-29 14:33 ` Mike Travis
2008-09-30 11:04 ` Ingo Molnar
2008-09-30 16:14 ` Mike Travis
2008-09-30 16:46 ` Linus Torvalds
2008-09-30 18:02 ` Mike Travis
2008-09-30 22:22 ` [RFC 1/1] cpumask: New cpumask API - take 2 - use unsigned longs Mike Travis
2008-10-01 0:45 ` Rusty Russell
2008-10-01 0:44 ` [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected Rusty Russell
2008-08-26 19:11 ` Mike Travis
2008-08-26 19:06 ` Mike Travis
2008-08-26 20:45 ` David Miller
2008-08-29 12:42 ` Jes Sorensen
2008-08-29 16:14 ` Linus Torvalds
2008-08-29 20:04 ` David Miller
2008-09-01 11:53 ` Jes Sorensen
2008-09-02 14:27 ` Jes Sorensen
2008-08-26 19:03 ` Mike Travis
2008-08-26 19:40 ` Linus Torvalds
2008-08-26 19:01 ` Mike Travis
2008-08-26 19:09 ` Linus Torvalds
2008-08-26 19:28 ` Dave Jones
2008-08-26 20:01 ` Mike Travis
2008-08-27 6:54 ` Nick Piggin
2008-08-27 7:05 ` David Miller
2008-08-27 7:47 ` Nick Piggin
2008-08-27 8:44 ` David Miller
2008-08-27 14:48 ` Mike Travis
2008-08-27 14:36 ` Mike Travis
2008-08-27 14:35 ` Mike Travis
2008-08-26 19:35 ` Mike Travis
2008-08-25 21:30 ` Alan D. Brunelle
2008-08-25 22:07 ` Christoph Lameter
2008-08-26 7:59 ` Ingo Molnar
2008-08-26 19:48 ` Mike Travis
2008-08-26 1:11 ` Rusty Russell
2008-08-26 17:35 ` Linus Torvalds
2008-08-26 18:30 ` Adrian Bunk
2008-08-26 18:40 ` Linus Torvalds
2008-08-26 20:21 ` Adrian Bunk
2008-08-26 20:41 ` Linus Torvalds [this message]
2008-08-27 16:21 ` Jamie Lokier
2008-08-26 18:47 ` Linus Torvalds
2008-08-26 19:02 ` Jamie Lokier
2008-08-26 19:18 ` Linus Torvalds
2008-08-26 20:59 ` Adrian Bunk
2008-08-26 21:04 ` Linus Torvalds
2008-08-26 22:54 ` Parag Warudkar
2008-08-26 23:00 ` David VomLehn
2008-08-26 23:45 ` Adrian Bunk
2008-08-26 23:47 ` Linus Torvalds
2008-08-27 0:53 ` Greg Ungerer
2008-08-27 1:08 ` Parag Warudkar
2008-08-27 1:31 ` Greg Ungerer
2008-08-27 2:16 ` Parag Warudkar
2008-08-27 8:44 ` Bernd Petrovitsch
2008-08-27 0:58 ` Parag Warudkar
2008-08-27 1:49 ` Linus Torvalds
2008-08-27 2:36 ` Parag Warudkar
2008-08-27 2:52 ` Linus Torvalds
2008-08-27 8:32 ` Alan Cox
2008-08-27 6:01 ` Paul Mackerras
2008-08-27 10:58 ` Arjan van de Ven
2008-08-27 15:18 ` Linus Torvalds
2008-08-27 11:58 ` Adrian Bunk
2008-08-27 9:00 ` Bernd Petrovitsch
2008-08-27 12:56 ` Parag Warudkar
2008-08-27 13:17 ` Bernd Petrovitsch
2008-08-27 15:48 ` Jamie Lokier
2008-08-27 16:38 ` Bernd Petrovitsch
2008-08-27 17:51 ` Jamie Lokier
2008-08-27 19:30 ` Bernd Petrovitsch
2008-08-28 0:06 ` Greg Ungerer
2008-08-28 0:11 ` Greg Ungerer
2008-08-27 8:34 ` Bernd Petrovitsch
2008-08-26 23:24 ` Adrian Bunk
2008-08-26 23:51 ` Linus Torvalds
2008-08-27 0:23 ` Adrian Bunk
2008-08-27 0:28 ` Linus Torvalds
2008-08-27 11:58 ` Adrian Bunk
2008-08-27 16:00 ` Paul Mundt
2008-08-27 17:35 ` Adrian Bunk
2008-08-28 0:32 ` Paul Mundt
2008-08-28 0:46 ` David Miller
2008-08-28 1:02 ` Paul Mundt
2008-08-28 16:16 ` Adrian Bunk
2008-08-28 1:05 ` Greg Ungerer
2008-08-27 8:25 ` Alan Cox
2008-08-27 12:52 ` Parag Warudkar
2008-08-27 13:21 ` Alan Cox
2008-08-27 16:24 ` Parag Warudkar
2008-08-26 19:55 ` Jeff Garzik
2008-08-26 20:06 ` e1000 horridness (was Re: [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected) Linus Torvalds
2008-08-26 20:14 ` Kok, Auke
2008-08-26 22:04 ` Jeff Kirsher
2008-08-25 12:44 ` [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected Alan D. Brunelle
2008-08-25 13:13 ` Alan D. Brunelle
2008-08-25 18:02 ` Linus Torvalds
2008-08-25 14:05 ` Alan D. Brunelle
2008-08-23 18:10 ` [Bug #11340] LTP overnight run resulted in unusable box Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11343] SATA Cold Boot Problems with 2.6.27-rc[23] on nVidia 680i Rafael J. Wysocki
2008-08-23 22:34 ` Jeff Garzik
2008-08-23 18:10 ` [Bug #11354] AMD Elan regression with 2.6.27-rc3 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11358] net: forcedeth call restore mac addr in nv_shutdown path Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11357] Can not boot up with zd1211rw USB-Wlan Stick Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11355] Regression in 2.6.27-rc2 when cross-building the kernel Rafael J. Wysocki
2008-08-24 21:34 ` Rafael J. Wysocki
2008-09-01 9:35 ` David Woodhouse
2008-09-01 16:51 ` Larry Finger
2008-09-01 17:37 ` David Woodhouse
2008-08-23 18:10 ` [Bug #11356] Linux 2.6.27-rc3 - build failure: undefined reference to `.lockdep_count_forward_deps' Rafael J. Wysocki
2008-08-24 6:13 ` Frans Pop
2008-08-24 21:10 ` Rafael J. Wysocki
2008-08-25 14:03 ` Adrian Bunk
2008-08-23 18:10 ` [Bug #11361] my servers with nvidia mcp55 nic don't work with msi in second kernel by kexec Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11379] char/tpm: tpm_infineon no longer loaded for HP 2510p laptop Rafael J. Wysocki
2008-08-24 6:18 ` Frans Pop
2008-08-24 21:12 ` Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11360] mpc8xxx_wdt.c doesn't build modular Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11380] lockdep warning: cpu_add_remove_lock at:cpu_maps_update_begin+0x14/0x16 Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11388] 2.6.27-rc3 warns about MTRR range; only 3 of 16gb of memory is usable Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11401] pktcdvd: BUG, NULL pointer dereference in pkt_ioctl, bisected Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11382] e1000e: 2.6.27-rc1 corrupts EEPROM/NVM Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11398] hda_intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11404] BUG: in 2.6.23-rc3-git7 in do_cciss_intr Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11402] skbuff bug? Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11405] 2.6.27-rc3 segfault on cold boot; not on warm boot Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11406] patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11403] 2.6.27-rc2 USB suspend regression Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11409] build issue #564 for v2.6.27-rc4 : undefined reference to `NS8390p_init' Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11413] get_rtc_time() triggers NMI watchdog in hpet_rtc_interrupt() Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11410] SLUB list_lock vs obj_hash.lock Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11407] suspend: unable to handle kernel paging request Rafael J. Wysocki
2008-08-23 18:10 ` [Bug #11414] Random crashes with 2.6.27-rc3 on PPC Rafael J. Wysocki
2008-08-24 17:48 ` 2.6.27-rc4-git1: Reported regressions from 2.6.26 Linus Torvalds
2008-08-24 19:23 ` David Greaves
2008-08-25 0:51 ` Linus Torvalds
2008-08-24 18:03 ` Linus Torvalds
2008-08-24 18:43 ` Vegard Nossum
2008-08-24 18:58 ` Linus Torvalds
2008-08-25 13:03 ` Daniel J Blueman
2008-08-24 18:34 ` Linus Torvalds
2008-08-27 20:17 ` Peter Osterlund
2008-08-27 20:40 ` Linus Torvalds
2008-08-27 20:45 ` Linus Torvalds
2008-08-28 13:52 ` Christoph Hellwig
2008-09-02 7:26 ` Jens Axboe
2008-09-03 2:06 ` Al Viro
2008-09-04 10:13 ` Jens Axboe
2008-09-15 5:30 ` Al Viro
2008-08-27 22:08 ` Alan Cox
2008-08-27 22:38 ` Linus Torvalds
2008-08-27 22:28 ` Alan Cox
2008-08-27 23:00 ` Linus Torvalds
2008-08-27 23:12 ` Linus Torvalds
2008-08-28 0:35 ` Linus Torvalds
2008-08-27 22:43 ` David Miller
2008-08-27 22:45 ` Alexey Dobriyan
2008-08-24 18:52 ` Linus Torvalds
2008-08-24 22:50 ` Sean Young
2008-08-25 0:16 ` H. Peter Anvin
2008-08-24 19:03 ` Linus Torvalds
2008-08-24 19:23 ` Adrian Bunk
2008-08-24 21:40 ` Rafael J. Wysocki
2008-08-25 0:48 ` Benjamin Herrenschmidt
2008-08-25 11:40 ` Rafael J. Wysocki
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=alpine.LFD.1.10.0808261332570.3363@nehalem.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=Alan.Brunelle@hp.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=bunk@kernel.org \
--cc=kernel-testers@vger.kernel.org \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=rusty@rustcorp.com.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®