amd64 x86-64 boot fails with more then 64 CPUs
Bug #706058 reported by
Tim Gardner
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
Tim Gardner | ||
Lucid |
Fix Released
|
Undecided
|
Tim Gardner | ||
Maverick |
Fix Released
|
Undecided
|
Tim Gardner | ||
Natty |
Fix Released
|
Undecided
|
Tim Gardner |
Bug Description
Platforms with more then 64 CPUs fail to boot.
Changed in linux (Ubuntu Natty): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu Lucid): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
status: | New → In Progress |
tags: | added: verification-needed |
tags: | added: verification-needed-lucid |
tags: |
added: verification-done-maverick removed: verification-done |
To post a comment you must log in.
SRU Justification
Impact: Servers with more then 64 logical CPUs cannot boot.
Patch Description: Increase CONFIG_NR_CPUS to 256 for the amd64 server flavour
The CPU hotplug subsytem allocates memory using the per-cpu mechanism. Enough memory is pre-defined by CONFIG_NR_CPUS to accommodate the maximum number of CPUs that can be online. This value is discovered at boot time and is used to trim the actual memory allocated to the real number of CPUs. In effect, CONFIG_NR_CPUS has little impact on memory consumption except for these 9 vairables:
kernel/cpu.c:static DECLARE_ BITMAP( cpu_possible_ bits, CONFIG_NR_CPUS) __read_mostly BITMAP( cpu_possible_ bits, CONFIG_NR_CPUS) __read_mostly; BITMAP( cpu_online_ bits, CONFIG_NR_CPUS) __read_mostly; BITMAP( cpu_present_ bits, CONFIG_NR_CPUS) __read_mostly; BITMAP( cpu_active_ bits, CONFIG_NR_CPUS) __read_mostly; BITMAP( cpus, CONFIG_NR_CPUS); BITMAP( span, CONFIG_NR_CPUS); BITMAP( tmpmask, CONFIG_NR_CPUS); BITMAP( kmem_cach_ cpu_free_ init_once, CONFIG_NR_CPUS);
kernel/cpu.c:static DECLARE_
kernel/cpu.c:static DECLARE_
kernel/cpu.c:static DECLARE_
kernel/cpu.c:static DECLARE_
kernel/sched.c: DECLARE_
kernel/sched.c: DECLARE_
kernel/sched.c: static DECLARE_
mm/slub.c:static DECLARE_
The increase in memory size of these variables is negligible since they are bit map structures. For example, increasing from 64 to 256 only adds 24 bytes per variable.