1
0
Fork 0
alistair23-linux/arch
Linus Torvalds d25e26b61d [x86] Clean up MAXSMP Kconfig, and limit NR_CPUS to 512
This fixes a regression that was indirectly caused by commit
1184dc2ffe ("x86: modify Kconfig to allow
up to 4096 cpus").

Allowing 4k CPU's is not practical at this time, because we still have a
number of places that have several 'cpumask_t's on the stack, and a
4k-bit cpumask is 512 bytes of stack-space for each such variable.  This
literally caused functions like 'smp_call_function_mask' to have a 2.5kB
stack frame, and several functions to have 2kB stackframes.

With an 8kB stack total, smashing the stack was simply much too likely.
At least bugzilla entry

	http://bugzilla.kernel.org/show_bug.cgi?id=11342

was due to this.

The earlier commit to not inline load_module() into sys_init_module()
fixed the particular symptoms of this that Alan Brunelle saw in that
bugzilla entry, but the huge stack waste by cpumask_t's was the more
direct cause.

Some day we'll have allocation helpers that allocate large CPU masks
dynamically, but in the meantime we simply cannot allow cpumasks this
large.

Cc: Alan D. Brunelle <Alan.Brunelle@hp.com>
Cc: Mike Travis <travis@sgi.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-08-25 14:15:38 -07:00
..
alpha alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
arm removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
avr32 avr32: Make atstk1006_nand_data definition static 2008-08-08 12:44:56 +02:00
blackfin Blackfin arch: hook up some missing new system calls 2008-08-14 15:40:19 +08:00
cris removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
frv FRV: Wire up new system calls 2008-08-01 13:03:49 -07:00
h8300 [h8300] move include/asm-h8300 to arch/h8300/include/asm 2008-08-13 14:26:32 -07:00
ia64 [IA64] use generic compat_old_sys_readdir 2008-08-18 15:42:11 -07:00
m32r m32r: use generic show_mem() 2008-07-26 12:00:11 -07:00
m68k m68k{,nommu}: Wire up new system calls 2008-08-11 10:37:34 -07:00
m68knommu m68k{,nommu}: Wire up new system calls 2008-08-11 10:37:34 -07:00
mips remove unneeded #include <linux/ide.h>'s 2008-08-05 18:17:00 +02:00
mn10300 removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
parisc [PATCH] sanitize __user_walk_fd() et.al. 2008-07-26 20:53:34 -04:00
powerpc removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
s390 [S390] Update default configuration. 2008-08-21 19:46:42 +02:00
sh Merge branch 'sh/for-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2008-08-20 08:46:11 -07:00
sparc sparc64: Implement IRQ stacks. 2008-08-12 18:33:56 -07:00
sparc64 sparc64: Fix cmdline_memory_size handling bugs. 2008-08-14 01:45:41 -07:00
um uml: fix tty-related build error 2008-07-30 09:41:45 -07:00
x86 [x86] Clean up MAXSMP Kconfig, and limit NR_CPUS to 512 2008-08-25 14:15:38 -07:00
xtensa remove unneeded #include <linux/ide.h>'s 2008-08-05 18:17:00 +02:00
.gitignore arch: Ignore arch/i386 and arch/x86_64 2008-01-19 21:29:39 -08:00
Kconfig tracehook: CONFIG_HAVE_ARCH_TRACEHOOK 2008-07-26 12:00:09 -07:00