aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/Kconfig
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2009-04-28 13:07:31 -0400
committerH. Peter Anvin <hpa@zytor.com>2009-05-28 12:24:13 -0400
commit4efc0670baf4b14bc95502e54a83ccf639146125 (patch)
treee2a4c61f303701d967b0d3fa9eccb4dcb576c690 /arch/x86/Kconfig
parentd896a940ef4f12a0a6bc432853b249dcfbacabf0 (diff)
x86, mce: use 64bit machine check code on 32bit
The 64bit machine check code is in many ways much better than the 32bit machine check code: it is more specification compliant, is cleaner, only has a single code base versus one per CPU, has better infrastructure for recovery, has a cleaner way to communicate with user space etc. etc. Use the 64bit code for 32bit too. This is the second attempt to do this. There was one a couple of years ago to unify this code for 32bit and 64bit. Back then this ran into some trouble with K7s and was reverted. I believe this time the K7 problems (and some others) are addressed. I went over the old handlers and was very careful to retain all quirks. But of course this needs a lot of testing on old systems. On newer 64bit capable systems I don't expect much problems because they have been already tested with the 64bit kernel. I made this a CONFIG for now that still allows to select the old machine check code. This is mostly to make testing easier, if someone runs into a problem we can ask them to try with the CONFIG switched. The new code is default y for more coverage. Once there is confidence the 64bit code works well on older hardware too the CONFIG_X86_OLD_MCE and the associated code can be easily removed. This causes a behaviour change for 32bit installations. They now have to install the mcelog package to be able to log corrected machine checks. The 64bit machine check code only handles CPUs which support the standard Intel machine check architecture described in the IA32 SDM. The 32bit code has special support for some older CPUs which have non standard machine check architectures, in particular WinChip C3 and Intel P5. I made those a separate CONFIG option and kept them for now. The WinChip variant could be probably removed without too much pain, it doesn't really do anything interesting. P5 is also disabled by default (like it was before) because many motherboards have it miswired, but according to Alan Cox a few embedded setups use that one. Forward ported/heavily changed version of old patch, original patch included review/fixes from Thomas Gleixner, Bert Wesarg. Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r--arch/x86/Kconfig33
1 files changed, 31 insertions, 2 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index a6efe0a2e9ae..c1c5ccd1937f 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -789,6 +789,22 @@ config X86_MCE
789 to disable it. MCE support simply ignores non-MCE processors like 789 to disable it. MCE support simply ignores non-MCE processors like
790 the 386 and 486, so nearly everyone can say Y here. 790 the 386 and 486, so nearly everyone can say Y here.
791 791
792config X86_OLD_MCE
793 depends on X86_32 && X86_MCE
794 bool "Use legacy machine check code (will go away)"
795 default n
796 select X86_ANCIENT_MCE
797 ---help---
798 Use the old i386 machine check code. This is merely intended for
799 testing in a transition period. Try this if you run into any machine
800 check related software problems, but report the problem to
801 linux-kernel. When in doubt say no.
802
803config X86_NEW_MCE
804 depends on X86_MCE
805 bool
806 default y if (!X86_OLD_MCE && X86_32) || X86_64
807
792config X86_MCE_INTEL 808config X86_MCE_INTEL
793 def_bool y 809 def_bool y
794 prompt "Intel MCE features" 810 prompt "Intel MCE features"
@@ -805,6 +821,15 @@ config X86_MCE_AMD
805 Additional support for AMD specific MCE features such as 821 Additional support for AMD specific MCE features such as
806 the DRAM Error Threshold. 822 the DRAM Error Threshold.
807 823
824config X86_ANCIENT_MCE
825 def_bool n
826 depends on X86_32
827 prompt "Support for old Pentium 5 / WinChip machine checks"
828 ---help---
829 Include support for machine check handling on old Pentium 5 or WinChip
830 systems. These typically need to be enabled explicitely on the command
831 line.
832
808config X86_MCE_THRESHOLD 833config X86_MCE_THRESHOLD
809 depends on X86_MCE_AMD || X86_MCE_INTEL 834 depends on X86_MCE_AMD || X86_MCE_INTEL
810 bool 835 bool
@@ -812,7 +837,7 @@ config X86_MCE_THRESHOLD
812 837
813config X86_MCE_NONFATAL 838config X86_MCE_NONFATAL
814 tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4" 839 tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
815 depends on X86_32 && X86_MCE 840 depends on X86_OLD_MCE
816 ---help--- 841 ---help---
817 Enabling this feature starts a timer that triggers every 5 seconds which 842 Enabling this feature starts a timer that triggers every 5 seconds which
818 will look at the machine check registers to see if anything happened. 843 will look at the machine check registers to see if anything happened.
@@ -825,11 +850,15 @@ config X86_MCE_NONFATAL
825 850
826config X86_MCE_P4THERMAL 851config X86_MCE_P4THERMAL
827 bool "check for P4 thermal throttling interrupt." 852 bool "check for P4 thermal throttling interrupt."
828 depends on X86_32 && X86_MCE && (X86_UP_APIC || SMP) 853 depends on X86_OLD_MCE && X86_MCE && (X86_UP_APIC || SMP)
829 ---help--- 854 ---help---
830 Enabling this feature will cause a message to be printed when the P4 855 Enabling this feature will cause a message to be printed when the P4
831 enters thermal throttling. 856 enters thermal throttling.
832 857
858config X86_THERMAL_VECTOR
859 def_bool y
860 depends on X86_MCE_P4THERMAL || X86_MCE_INTEL
861
833config VM86 862config VM86
834 bool "Enable VM86 support" if EMBEDDED 863 bool "Enable VM86 support" if EMBEDDED
835 default y 864 default y