x86: check range in reserve_early()
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>