diff options
author | Yinghai Lu <yinghai@kernel.org> | 2010-03-29 22:38:29 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-03-31 17:40:57 -0700 |
commit | 9f3a5f52aa63d3aa4c64a7245153549bb66bad8c (patch) | |
tree | a0677e3fcfaa41c70e239d9c3d4bd6f54867c4bd /arch/x86/kernel/msr.c | |
parent | 8ae06d223f8203c72104e5c0c4ee49a000aedb42 (diff) |
x86: Make e820_remove_range to handle all covered case
Rusty found on lguest with trim_bios_range, max_pfn is not right anymore, and
looks e820_remove_range does not work right.
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] LGUEST: 0000000000000000 - 0000000004000000 (usable)
[ 0.000000] Notice: NX (Execute Disable) protection missing in CPU or disabled in BIOS!
[ 0.000000] DMI not present or invalid.
[ 0.000000] last_pfn = 0x3fa0 max_arch_pfn = 0x100000
[ 0.000000] init_memory_mapping: 0000000000000000-0000000003fa0000
root cause is: the e820_remove_range doesn't handle the all covered
case. e820_remove_range(BIOS_START, BIOS_END - BIOS_START, ...)
produces a bogus range as a result.
Make it match e820_update_range() by handling that case too.
Reported-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Tested-by: Rusty Russell <rusty@rustcorp.com.au>
LKML-Reference: <4BB18E55.6090903@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/kernel/msr.c')
0 files changed, 0 insertions, 0 deletions