OSDN Git Service
(root)
/
android-x86
/
kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b319eed
)
x86: check range in reserve_early()
author
Yinghai Lu
<yinghai@kernel.org>
Tue, 24 Feb 2009 21:12:43 +0000
(13:12 -0800)
committer
Ingo Molnar
<mingo@elte.hu>
Tue, 24 Feb 2009 21:43:15 +0000
(22:43 +0100)
Impact: cleanup
one 32-bit system reports:
BIOS-provided physical RAM map:
BIOS-e820:
0000000000000000
-
000000000009fc00
(usable)
BIOS-e820:
000000000009fc00
-
00000000000a0000
(reserved)
BIOS-e820:
00000000000f0000
-
0000000000100000
(reserved)
BIOS-e820:
0000000000100000
-
000000001c000000
(usable)
BIOS-e820:
00000000ffff0000
-
0000000100000000
(reserved)
DMI 2.0 present.
last_pfn = 0x1c000 max_arch_pfn = 0x100000
kernel direct mapping tables up to
1c000000
@ 7000-c000
..
RAMDISK:
1bc69000
-
1bfef4fa
..
0MB HIGHMEM available.
448MB LOWMEM available.
mapped low ram: 0 -
1c000000
low ram:
00000000
-
1c000000
bootmap
00002000
-
00005800
(9 early reservations) ==> bootmem [
0000000000
-
001c000000
]
#0 [
0000000000
-
0000001000
] BIOS data page ==> [
0000000000
-
0000001000
]
#1 [
0000001000
-
0000002000
] EX TRAMPOLINE ==> [
0000001000
-
0000002000
]
#2 [
0000006000
-
0000007000
] TRAMPOLINE ==> [
0000006000
-
0000007000
]
#3 [
0000400000
-
00009ed14c
] TEXT DATA BSS ==> [
0000400000
-
00009ed14c
]
#4 [
001bc69000
-
001bfef4fa
] RAMDISK ==> [
001bc69000
-
001bfef4fa
]
#5 [
00009ee000
-
00009f2000
] INIT_PG_TABLE ==> [
00009ee000
-
00009f2000
]
#6 [
000009f400
-
0000100000
] BIOS reserved ==> [
000009f400
-
0000100000
]
#7 [
0000007000
-
0000007000
] PGTABLE
#8 [
0000002000
-
0000006000
] BOOTMAP ==> [
0000002000
-
0000006000
]
Notice the strange blank PGTABLE entry.
The reason is init_pg_table is big enough, and zero range is called
with init_memory_mapping/reserve_early().
So try to check the range in reserve_early()
v2: fix the reversed compare
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: nickpiggin@yahoo.com.au
Cc: ink@jurassic.park.msu.ru
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/e820.c
patch
|
blob
|
history
diff --git
a/arch/x86/kernel/e820.c
b/arch/x86/kernel/e820.c
index
e858268
..
508bec1
100644
(file)
--- a/
arch/x86/kernel/e820.c
+++ b/
arch/x86/kernel/e820.c
@@
-858,6
+858,9
@@
void __init reserve_early_overlap_ok(u64 start, u64 end, char *name)
*/
void __init reserve_early(u64 start, u64 end, char *name)
{
+ if (start >= end)
+ return;
+
drop_overlaps_that_are_ok(start, end);
__reserve_early(start, end, name, 0);
}