Revision f9228b204f789493117e458d2fefae937edb7272 authored by Russ Anderson on 22 March 2013, 22:04:43 UTC, committed by Linus Torvalds on 22 March 2013, 23:41:20 UTC
Booting with 32 TBytes memory hits BUG at mm/page_alloc.c:552! (output
below).

The key hint is "page 4294967296 outside zone".
4294967296 = 0x100000000 (bit 32 is set).

The problem is in include/linux/mmzone.h:

  530 static inline unsigned zone_end_pfn(const struct zone *zone)
  531 {
  532         return zone->zone_start_pfn + zone->spanned_pages;
  533 }

zone_end_pfn is "unsigned" (32 bits).  Changing it to "unsigned long"
(64 bits) fixes the problem.

zone_end_pfn() was added recently in commit 108bcc96ef70 ("mm: add & use
zone_end_pfn() and zone_spans_pfn()")

Output from the failure.

  No AGP bridge found
  page 4294967296 outside zone [ 4294967296 - 4327469056 ]
  ------------[ cut here ]------------
  kernel BUG at mm/page_alloc.c:552!
  invalid opcode: 0000 [#1] SMP
  Modules linked in:
  CPU 0
  Pid: 0, comm: swapper Not tainted 3.9.0-rc2.dtp+ #10
  RIP: free_one_page+0x382/0x430
  Process swapper (pid: 0, threadinfo ffffffff81942000, task ffffffff81955420)
  Call Trace:
    __free_pages_ok+0x96/0xb0
    __free_pages+0x25/0x50
    __free_pages_bootmem+0x8a/0x8c
    __free_memory_core+0xea/0x131
    free_low_memory_core_early+0x4a/0x98
    free_all_bootmem+0x45/0x47
    mem_init+0x7b/0x14c
    start_kernel+0x216/0x433
    x86_64_start_reservations+0x2a/0x2c
    x86_64_start_kernel+0x144/0x153
  Code: 89 f1 ba 01 00 00 00 31 f6 d3 e2 4c 89 ef e8 66 a4 01 00 e9 2c fe ff ff 0f 0b eb fe 0f 0b 66 66 2e 0f 1f 84 00 00 00 00 00 eb f3 <0f> 0b eb fe 0f 0b 0f 1f 84 00 00 00 00 00 eb f6 0f 0b eb fe 49

Signed-off-by: Russ Anderson <rja@sgi.com>
Reported-by: George Beshers <gbeshers@sgi.com>
Acked-by: Hedi Berriche <hedi@sgi.com>
Cc: Cody P Schafer <cody@linux.vnet.ibm.com>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 2ca067e
History
File Mode Size
debug
events
gcov
irq
power
sched
time
trace
.gitignore -rw-r--r-- 63 bytes
Kconfig.freezer -rw-r--r-- 52 bytes
Kconfig.hz -rw-r--r-- 1.7 KB
Kconfig.locks -rw-r--r-- 4.3 KB
Kconfig.preempt -rw-r--r-- 2.1 KB
Makefile -rw-r--r-- 6.9 KB
acct.c -rw-r--r-- 16.6 KB
async.c -rw-r--r-- 10.1 KB
audit.c -rw-r--r-- 40.7 KB
audit.h -rw-r--r-- 5.8 KB
audit_tree.c -rw-r--r-- 22.2 KB
audit_watch.c -rw-r--r-- 13.9 KB
auditfilter.c -rw-r--r-- 36.1 KB
auditsc.c -rw-r--r-- 71.9 KB
backtracetest.c -rw-r--r-- 2.1 KB
bounds.c -rw-r--r-- 600 bytes
capability.c -rw-r--r-- 11.7 KB
cgroup.c -rw-r--r-- 147.9 KB
cgroup_freezer.c -rw-r--r-- 12.9 KB
compat.c -rw-r--r-- 30.4 KB
configs.c -rw-r--r-- 2.8 KB
context_tracking.c -rw-r--r-- 4.2 KB
cpu.c -rw-r--r-- 17.5 KB
cpu_pm.c -rw-r--r-- 6.5 KB
cpuset.c -rw-r--r-- 77.0 KB
crash_dump.c -rw-r--r-- 1.2 KB
cred.c -rw-r--r-- 21.2 KB
delayacct.c -rw-r--r-- 5.1 KB
dma.c -rw-r--r-- 3.6 KB
elfcore.c -rw-r--r-- 459 bytes
exec_domain.c -rw-r--r-- 4.3 KB
exit.c -rw-r--r-- 43.0 KB
extable.c -rw-r--r-- 3.9 KB
fork.c -rw-r--r-- 45.7 KB
freezer.c -rw-r--r-- 4.0 KB
futex.c -rw-r--r-- 71.1 KB
futex_compat.c -rw-r--r-- 4.5 KB
groups.c -rw-r--r-- 6.0 KB
hrtimer.c -rw-r--r-- 47.1 KB
hung_task.c -rw-r--r-- 5.3 KB
irq_work.c -rw-r--r-- 4.5 KB
itimer.c -rw-r--r-- 7.3 KB
jump_label.c -rw-r--r-- 10.8 KB
kallsyms.c -rw-r--r-- 14.7 KB
kcmp.c -rw-r--r-- 4.3 KB
kexec.c -rw-r--r-- 40.5 KB
kmod.c -rw-r--r-- 19.2 KB
kprobes.c -rw-r--r-- 59.0 KB
ksysfs.c -rw-r--r-- 5.5 KB
kthread.c -rw-r--r-- 16.9 KB
latencytop.c -rw-r--r-- 7.6 KB
lglock.c -rw-r--r-- 1.9 KB
lockdep.c -rw-r--r-- 103.9 KB
lockdep_internals.h -rw-r--r-- 4.5 KB
lockdep_proc.c -rw-r--r-- 17.0 KB
lockdep_states.h -rw-r--r-- 233 bytes
modsign_certificate.S -rw-r--r-- 467 bytes
modsign_pubkey.c -rw-r--r-- 2.6 KB
module-internal.h -rw-r--r-- 495 bytes
module.c -rw-r--r-- 96.7 KB
module_signing.c -rw-r--r-- 5.9 KB
mutex-debug.c -rw-r--r-- 2.9 KB
mutex-debug.h -rw-r--r-- 1.7 KB
mutex.c -rw-r--r-- 13.3 KB
mutex.h -rw-r--r-- 1.3 KB
notifier.c -rw-r--r-- 16.0 KB
nsproxy.c -rw-r--r-- 6.2 KB
padata.c -rw-r--r-- 27.1 KB
panic.c -rw-r--r-- 11.2 KB
params.c -rw-r--r-- 21.7 KB
pid.c -rw-r--r-- 14.8 KB
pid_namespace.c -rw-r--r-- 8.8 KB
posix-cpu-timers.c -rw-r--r-- 41.4 KB
posix-timers.c -rw-r--r-- 29.3 KB
printk.c -rw-r--r-- 70.4 KB
profile.c -rw-r--r-- 16.1 KB
ptrace.c -rw-r--r-- 27.8 KB
range.c -rw-r--r-- 2.9 KB
rcu.h -rw-r--r-- 4.0 KB
rcupdate.c -rw-r--r-- 13.2 KB
rcutiny.c -rw-r--r-- 10.4 KB
rcutiny_plugin.h -rw-r--r-- 33.2 KB
rcutorture.c -rw-r--r-- 63.5 KB
rcutree.c -rw-r--r-- 98.3 KB
rcutree.h -rw-r--r-- 22.5 KB
rcutree_plugin.h -rw-r--r-- 73.6 KB
rcutree_trace.c -rw-r--r-- 12.9 KB
relay.c -rw-r--r-- 32.8 KB
res_counter.c -rw-r--r-- 4.3 KB
resource.c -rw-r--r-- 27.8 KB
rtmutex-debug.c -rw-r--r-- 4.7 KB
rtmutex-debug.h -rw-r--r-- 1.4 KB
rtmutex-tester.c -rw-r--r-- 8.7 KB
rtmutex.c -rw-r--r-- 26.3 KB
rtmutex.h -rw-r--r-- 1.1 KB
rtmutex_common.h -rw-r--r-- 3.3 KB
rwsem.c -rw-r--r-- 2.6 KB
seccomp.c -rw-r--r-- 13.9 KB
semaphore.c -rw-r--r-- 7.2 KB
signal.c -rw-r--r-- 94.9 KB
smp.c -rw-r--r-- 18.3 KB
smpboot.c -rw-r--r-- 6.6 KB
smpboot.h -rw-r--r-- 564 bytes
softirq.c -rw-r--r-- 20.7 KB
spinlock.c -rw-r--r-- 9.5 KB
srcu.c -rw-r--r-- 19.5 KB
stacktrace.c -rw-r--r-- 1.1 KB
stop_machine.c -rw-r--r-- 14.6 KB
sys.c -rw-r--r-- 52.2 KB
sys_ni.c -rw-r--r-- 5.9 KB
sysctl.c -rw-r--r-- 59.8 KB
sysctl_binary.c -rw-r--r-- 51.0 KB
task_work.c -rw-r--r-- 2.2 KB
taskstats.c -rw-r--r-- 16.4 KB
test_kprobes.c -rw-r--r-- 8.5 KB
time.c -rw-r--r-- 18.8 KB
timeconst.bc -rw-r--r-- 2.7 KB
timer.c -rw-r--r-- 49.6 KB
tracepoint.c -rw-r--r-- 19.7 KB
tsacct.c -rw-r--r-- 5.0 KB
uid16.c -rw-r--r-- 6.0 KB
up.c -rw-r--r-- 413 bytes
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.2 KB
user_namespace.c -rw-r--r-- 22.2 KB
utsname.c -rw-r--r-- 2.9 KB
utsname_sysctl.c -rw-r--r-- 3.0 KB
wait.c -rw-r--r-- 8.3 KB
watchdog.c -rw-r--r-- 13.8 KB
workqueue.c -rw-r--r-- 104.2 KB
workqueue_internal.h -rw-r--r-- 2.0 KB

back to top