diff options
author | Christoph Lameter <clameter@sgi.com> | 2008-02-27 11:07:10 -0800 |
---|---|---|
committer | Christoph Lameter <clameter@sgi.com> | 2008-02-27 11:07:10 -0800 |
commit | 9ef64cb4320df821638b508f79aa8b858cca99f0 (patch) | |
tree | 4efbf0854234f89c6f4413077ec795fc669b5b0a /arch/x86/boot | |
parent | 6f157c1d268d5888ca44c589dccd01729c4172f6 (diff) | |
parent | 7704a8b6fc4a8f51599eb2af4dcf1e2ac9c7e576 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/x86/boot')
-rw-r--r-- | arch/x86/boot/memory.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c index 378353956b5..e77d89f9e8a 100644 --- a/arch/x86/boot/memory.c +++ b/arch/x86/boot/memory.c @@ -37,6 +37,12 @@ static int detect_memory_e820(void) "=m" (*desc) : "D" (desc), "d" (SMAP), "a" (0xe820)); + /* BIOSes which terminate the chain with CF = 1 as opposed + to %ebx = 0 don't always report the SMAP signature on + the final, failing, probe. */ + if (err) + break; + /* Some BIOSes stop returning SMAP in the middle of the search loop. We don't know exactly how the BIOS screwed up the map at that point, we might have a @@ -47,9 +53,6 @@ static int detect_memory_e820(void) break; } - if (err) - break; - count++; desc++; } while (next && count < E820MAX); |