diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-08 16:59:23 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-08 16:59:23 -0700 |
commit | d9d05fda919cb6414ae4889b696b2fada7a23217 (patch) | |
tree | 55973380559881adb20b785c49aef6a7494a113f /arch/x86/kernel/e820.c | |
parent | 825118d1f1ce577224a3e668960717d8fc8ac44e (diff) | |
parent | e5299926d7459d9fa7c7f856983147817aedb10e (diff) |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: MCE: make cmci_discover_lock irq-safe
x86: xen, i386: reserve Xen pagetables
x86, kexec: fix crashdump panic with CONFIG_KEXEC_JUMP
x86-64: finish cleanup_highmaps()'s job wrt. _brk_end
x86: fix boot hang in early_reserve_e820()
x86: Fix a typo in a printk message
x86, srat: do not register nodes beyond e820 map
Diffstat (limited to 'arch/x86/kernel/e820.c')
-rw-r--r-- | arch/x86/kernel/e820.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index ef2c3563357d..006281302925 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c @@ -1074,12 +1074,13 @@ u64 __init early_reserve_e820(u64 startt, u64 sizet, u64 align) u64 addr; u64 start; - start = startt; - while (size < sizet && (start + 1)) + for (start = startt; ; start += size) { start = find_e820_area_size(start, &size, align); - - if (size < sizet) - return 0; + if (!(start + 1)) + return 0; + if (size >= sizet) + break; + } #ifdef CONFIG_X86_32 if (start >= MAXMEM) |