x86: check mptable physptr with max_low_pfn on 32bit
authorYinghai Lu <yinghai@kernel.org>
Mon, 23 Feb 2009 06:14:56 +0000 (22:14 -0800)
committerIngo Molnar <mingo@elte.hu>
Mon, 23 Feb 2009 06:41:31 +0000 (07:41 +0100)
commitecda06289f8202d4c6beb235f59ea464f4a91209
tree351d1919e4ea31dc727b6793bab2527461d06ef5
parent8e6dafd6c741cd4679b4de3c5d9698851e4fa59c
x86: check mptable physptr with max_low_pfn on 32bit

Impact: fix early crash on LinuxBIOS systems

Kevin O'Connor reported that Coreboot aka LinuxBIOS tries to put
mptable somewhere very high, well above max_low_pfn (below which
BIOSes generally put the mptable), causing a panic.

The BIOS will probably be changed to be compatible with older
Linus versions, but nevertheless the MP-spec does not forbid
an MP-table in arbitrary system RAM, so make sure it all
works even if the table is in an unexpected place.

Check physptr with max_low_pfn * PAGE_SIZE.

Reported-by: Kevin O'Connor <kevin@koconnor.net>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Stefan Reinauer <stepan@coresystems.de>
Cc: coreboot@coreboot.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/mpparse.c