x86: MTRR cleanup
authorJan Beulich <jbeulich@novell.com>
Wed, 9 Mar 2011 16:30:19 +0000 (16:30 +0000)
committerJan Beulich <jbeulich@novell.com>
Wed, 9 Mar 2011 16:30:19 +0000 (16:30 +0000)
Remove unused and pointless bits from MTRR handling code. Move some
data items into .data.read_mostly. Adjust some types.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/cpu/mtrr/Makefile
xen/arch/x86/cpu/mtrr/amd.c
xen/arch/x86/cpu/mtrr/cyrix.c
xen/arch/x86/cpu/mtrr/generic.c
xen/arch/x86/cpu/mtrr/main.c
xen/arch/x86/cpu/mtrr/mtrr.h

index f76191e545e0286c0ae4d2a6178afe9340105322..6072f1ed30f072e44c447920066f968e1ff3d112 100644 (file)
@@ -2,4 +2,4 @@ obj-$(x86_32) += amd.o
 obj-$(x86_32) += cyrix.o
 obj-y += generic.o
 obj-y += main.o
-obj-y += state.o
+obj-$(x86_32) += state.o
index 737535cebdd4ff79411b5296d776fb2b57ded7d0..271aa2ff3b9de3c697869ab7abe95b7d1cf2f7b6 100644 (file)
@@ -103,7 +103,7 @@ static int amd_validate_add_page(unsigned long base, unsigned long size, unsigne
        return 0;
 }
 
-static struct mtrr_ops amd_mtrr_ops = {
+static const struct mtrr_ops amd_mtrr_ops = {
        .vendor            = X86_VENDOR_AMD,
        .set               = amd_set_mtrr,
        .get               = amd_get_mtrr,
index 4677c91bb7e62bf1bb3791b50d0eb042f6f14031..03b09476095002eda124c83e6a05f0aed37e298b 100644 (file)
@@ -359,7 +359,7 @@ cyrix_arr_init(void)
 }
 #endif
 
-static struct mtrr_ops cyrix_mtrr_ops = {
+static const struct mtrr_ops cyrix_mtrr_ops = {
        .vendor            = X86_VENDOR_CYRIX,
 //     .init              = cyrix_arr_init,
        .set_all           = cyrix_set_all,
index 8c6b8191755900d6e40c032cddd2f0c7bb72b953..cd3c740da61a3145e1e2ebbcefa59bf68afa8ded 100644 (file)
@@ -467,7 +467,7 @@ int positive_have_wrcomb(void)
 
 /* generic structure...
  */
-struct mtrr_ops generic_mtrr_ops = {
+const struct mtrr_ops generic_mtrr_ops = {
        .use_intel_if      = 1,
        .set_all           = generic_set_all,
        .get               = generic_get_mtrr,
index 671b9966a9c3704190a8e75301e98feaebe0add6..b1a88474bd5e32d583aae7608e5593b45cb5056a 100644 (file)
 #define        get_cpu()       smp_processor_id()
 #define put_cpu()      do {} while(0)
 
-u32 num_var_ranges = 0;
+u32 __read_mostly num_var_ranges = 0;
 
-unsigned int *usage_table;
+unsigned int *__read_mostly usage_table;
 static DEFINE_MUTEX(mtrr_mutex);
 
-u64 size_or_mask, size_and_mask;
+u64 __read_mostly size_or_mask;
+u64 __read_mostly size_and_mask;
 
-static struct mtrr_ops * mtrr_ops[X86_VENDOR_NUM] = {};
-
-struct mtrr_ops * mtrr_if = NULL;
+const struct mtrr_ops *__read_mostly mtrr_if = NULL;
 
 static void set_mtrr(unsigned int reg, unsigned long base,
                     unsigned long size, mtrr_type type);
@@ -70,7 +69,7 @@ extern int arr3_protected;
 #define arr3_protected 0
 #endif
 
-static const char *mtrr_strings[MTRR_NUM_TYPES] =
+static const char *const mtrr_strings[MTRR_NUM_TYPES] =
 {
     "uncachable",               /* 0 */
     "write-combining",          /* 1 */
@@ -81,16 +80,20 @@ static const char *mtrr_strings[MTRR_NUM_TYPES] =
     "write-back",               /* 6 */
 };
 
-const char *mtrr_attrib_to_str(int x)
+static const char *mtrr_attrib_to_str(int x)
 {
        return (x <= 6) ? mtrr_strings[x] : "?";
 }
 
-void set_mtrr_ops(struct mtrr_ops * ops)
+#ifndef CONFIG_X86_64
+static const struct mtrr_ops *mtrr_ops[X86_VENDOR_NUM];
+
+void set_mtrr_ops(const struct mtrr_ops * ops)
 {
        if (ops->vendor && ops->vendor < X86_VENDOR_NUM)
                mtrr_ops[ops->vendor] = ops;
 }
+#endif
 
 /*  Returns non-zero if we have the write-combining memory type  */
 static int have_wrcomb(void)
@@ -472,7 +475,7 @@ static int mtrr_check(unsigned long base, unsigned long size)
  *     failures and do not wish system log messages to be sent.
  */
 
-int
+int __init
 mtrr_add(unsigned long base, unsigned long size, unsigned int type,
         char increment)
 {
@@ -565,7 +568,7 @@ int mtrr_del_page(int reg, unsigned long base, unsigned long size)
  *     code.
  */
 
-int
+int __init
 mtrr_del(int reg, unsigned long base, unsigned long size)
 {
        if (mtrr_check(base, size))
@@ -573,9 +576,6 @@ mtrr_del(int reg, unsigned long base, unsigned long size)
        return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
 }
 
-EXPORT_SYMBOL(mtrr_add);
-EXPORT_SYMBOL(mtrr_del);
-
 /* HACK ALERT!
  * These should be called implicitly, but we can't yet until all the initcall
  * stuff is done...
index 5a10f42ca9d0db1265bf6736074e1d3af4cc5ce9..f72cbbb1749d18cdfff252136c1a4ccf21937d54 100644 (file)
@@ -52,7 +52,7 @@ extern int generic_get_free_region(unsigned long base, unsigned long size,
 extern int generic_validate_add_page(unsigned long base, unsigned long size,
                                     unsigned int type);
 
-extern struct mtrr_ops generic_mtrr_ops;
+extern const struct mtrr_ops generic_mtrr_ops;
 
 extern int positive_have_wrcomb(void);
 
@@ -70,10 +70,10 @@ void set_mtrr_prepare_save(struct set_mtrr_context *ctxt);
 
 void get_mtrr_state(void);
 
-extern void set_mtrr_ops(struct mtrr_ops * ops);
+extern void set_mtrr_ops(const struct mtrr_ops *);
 
 extern u64 size_or_mask, size_and_mask;
-extern struct mtrr_ops * mtrr_if;
+extern const struct mtrr_ops *mtrr_if;
 
 #define is_cpu(vnd)    (mtrr_if && mtrr_if->vendor == X86_VENDOR_##vnd)
 #define use_intel()    (mtrr_if && mtrr_if->use_intel_if == 1)
@@ -81,6 +81,5 @@ extern struct mtrr_ops * mtrr_if;
 extern unsigned int num_var_ranges;
 
 void mtrr_state_warn(void);
-const char *mtrr_attrib_to_str(int x);
 void mtrr_wrmsr(unsigned int msr, uint64_t msr_content);