diff options
-rw-r--r-- | arch/x86/Kconfig | 20 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 4 |
2 files changed, 23 insertions, 1 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 7820d447bb8d..633f25dd9ee2 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -1089,6 +1089,26 @@ config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK | |||
1089 | Set whether the default state of memory_corruption_check is | 1089 | Set whether the default state of memory_corruption_check is |
1090 | on or off. | 1090 | on or off. |
1091 | 1091 | ||
1092 | config X86_RESERVE_LOW_64K | ||
1093 | bool "Reserve low 64K of RAM on AMI/Phoenix BIOSen" | ||
1094 | default y | ||
1095 | help | ||
1096 | Reserve the first 64K of physical RAM on BIOSes that are known | ||
1097 | to potentially corrupt that memory range. A numbers of BIOSes are | ||
1098 | known to utilize this area during suspend/resume, so it must not | ||
1099 | be used by the kernel. | ||
1100 | |||
1101 | Set this to N if you are absolutely sure that you trust the BIOS | ||
1102 | to get all its memory reservations and usages right. | ||
1103 | |||
1104 | If you have doubts about the BIOS (e.g. suspend/resume does not | ||
1105 | work or there's kernel crashes after certain hardware hotplug | ||
1106 | events) and it's not AMI or Phoenix, then you might want to enable | ||
1107 | X86_CHECK_BIOS_CORRUPTION=y to allow the kernel to check typical | ||
1108 | corruption patterns. | ||
1109 | |||
1110 | Say Y if unsure. | ||
1111 | |||
1092 | config MATH_EMULATION | 1112 | config MATH_EMULATION |
1093 | bool | 1113 | bool |
1094 | prompt "Math emulation" if X86_32 | 1114 | prompt "Math emulation" if X86_32 |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 33719544a224..786c1886ae53 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -735,13 +735,14 @@ static int __init dmi_low_memory_corruption(const struct dmi_system_id *d) | |||
735 | "%s detected: BIOS may corrupt low RAM, working it around.\n", | 735 | "%s detected: BIOS may corrupt low RAM, working it around.\n", |
736 | d->ident); | 736 | d->ident); |
737 | 737 | ||
738 | reserve_early(0x0, 0x10000, "BIOS quirk"); | 738 | reserve_early_overlap_ok(0x0, 0x10000, "BIOS quirk"); |
739 | 739 | ||
740 | return 0; | 740 | return 0; |
741 | } | 741 | } |
742 | 742 | ||
743 | /* List of systems that have known low memory corruption BIOS problems */ | 743 | /* List of systems that have known low memory corruption BIOS problems */ |
744 | static struct dmi_system_id __initdata bad_bios_dmi_table[] = { | 744 | static struct dmi_system_id __initdata bad_bios_dmi_table[] = { |
745 | #ifdef CONFIG_X86_RESERVE_LOW_64K | ||
745 | { | 746 | { |
746 | .callback = dmi_low_memory_corruption, | 747 | .callback = dmi_low_memory_corruption, |
747 | .ident = "AMI BIOS", | 748 | .ident = "AMI BIOS", |
@@ -757,6 +758,7 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = { | |||
757 | }, | 758 | }, |
758 | }, | 759 | }, |
759 | {} | 760 | {} |
761 | #endif | ||
760 | }; | 762 | }; |
761 | 763 | ||
762 | /* | 764 | /* |