
fix mtrr support with x86 cpu types


 arch/i386/kernel/cpu/mtrr/Makefile |    6 +++---
 arch/i386/kernel/cpu/mtrr/cyrix.c  |    2 +-
 arch/i386/kernel/cpu/mtrr/main.c   |   14 +++++++++++++-
 3 files changed, 17 insertions(+), 5 deletions(-)

Index: linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/Makefile
===================================================================
--- linux-2.6.17-rc3-no1.orig/arch/i386/kernel/cpu/mtrr/Makefile
+++ linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/Makefile
@@ -1,5 +1,5 @@
 obj-y		:= main.o if.o generic.o state.o
-obj-y		+= amd.o
-obj-y		+= cyrix.o
-obj-y		+= centaur.o
+obj-$(CONFIG_CPU_SUP_AMD)	+= amd.o
+obj-$(CONFIG_CPU_SUP_CYRIX)	+= cyrix.o
+obj-$(CONFIG_CPU_SUP_CENTAUR)	+= centaur.o
 
Index: linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/main.c
===================================================================
--- linux-2.6.17-rc3-no1.orig/arch/i386/kernel/cpu/mtrr/main.c
+++ linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/main.c
@@ -59,7 +59,7 @@ struct mtrr_ops * mtrr_if = NULL;
 static void set_mtrr(unsigned int reg, unsigned long base,
 		     unsigned long size, mtrr_type type);
 
-extern int arr3_protected;
+int arr3_protected;
 
 void set_mtrr_ops(struct mtrr_ops * ops)
 {
@@ -544,9 +544,15 @@ extern void centaur_init_mtrr(void);
 
 static void __init init_ifs(void)
 {
+#ifdef CONFIG_CPU_SUP_AMD
 	amd_init_mtrr();
+#endif
+#ifdef CONFIG_CPU_SUP_CYRIX
 	cyrix_init_mtrr();
+#endif
+#ifdef CONFIG_CPU_SUP_CENTAUR
 	centaur_init_mtrr();
+#endif
 }
 
 /* The suspend/resume methods are only for CPU without MTRR. CPU using generic
@@ -644,6 +650,7 @@ void __init mtrr_bp_init(void)
 		}
 	} else {
 		switch (boot_cpu_data.x86_vendor) {
+#ifdef CONFIG_CPU_SUP_AMD
 		case X86_VENDOR_AMD:
 			if (cpu_has_k6_mtrr) {
 				/* Pre-Athlon (K6) AMD CPU MTRRs */
@@ -652,6 +659,8 @@ void __init mtrr_bp_init(void)
 				size_and_mask = 0;
 			}
 			break;
+#endif
+#ifdef CONFIG_CPU_SUP_CENTAUR
 		case X86_VENDOR_CENTAUR:
 			if (cpu_has_centaur_mcr) {
 				mtrr_if = mtrr_ops[X86_VENDOR_CENTAUR];
@@ -659,6 +668,8 @@ void __init mtrr_bp_init(void)
 				size_and_mask = 0;
 			}
 			break;
+#endif
+#ifdef CONFIG_CPU_SUP_CYRIX
 		case X86_VENDOR_CYRIX:
 			if (cpu_has_cyrix_arr) {
 				mtrr_if = mtrr_ops[X86_VENDOR_CYRIX];
@@ -666,6 +677,7 @@ void __init mtrr_bp_init(void)
 				size_and_mask = 0;
 			}
 			break;
+#endif
 		default:
 			break;
 		}
Index: linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/cyrix.c
===================================================================
--- linux-2.6.17-rc3-no1.orig/arch/i386/kernel/cpu/mtrr/cyrix.c
+++ linux-2.6.17-rc3-no1/arch/i386/kernel/cpu/mtrr/cyrix.c
@@ -5,7 +5,7 @@
 #include <asm/io.h>
 #include "mtrr.h"
 
-int arr3_protected;
+extern int arr3_protected;
 
 static void
 cyrix_get_arr(unsigned int reg, unsigned long *base,
