|
@@ -1162,51 +1162,6 @@ void identify_secondary_cpu(struct cpuinfo_x86 *c)
|
|
|
mtrr_ap_init();
|
|
|
}
|
|
|
|
|
|
-struct msr_range {
|
|
|
- unsigned min;
|
|
|
- unsigned max;
|
|
|
-};
|
|
|
-
|
|
|
-static const struct msr_range msr_range_array[] = {
|
|
|
- { 0x00000000, 0x00000418},
|
|
|
- { 0xc0000000, 0xc000040b},
|
|
|
- { 0xc0010000, 0xc0010142},
|
|
|
- { 0xc0011000, 0xc001103b},
|
|
|
-};
|
|
|
-
|
|
|
-static void __print_cpu_msr(void)
|
|
|
-{
|
|
|
- unsigned index_min, index_max;
|
|
|
- unsigned index;
|
|
|
- u64 val;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) {
|
|
|
- index_min = msr_range_array[i].min;
|
|
|
- index_max = msr_range_array[i].max;
|
|
|
-
|
|
|
- for (index = index_min; index < index_max; index++) {
|
|
|
- if (rdmsrl_safe(index, &val))
|
|
|
- continue;
|
|
|
- pr_info(" MSR%08x: %016llx\n", index, val);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static int show_msr;
|
|
|
-
|
|
|
-static __init int setup_show_msr(char *arg)
|
|
|
-{
|
|
|
- int num;
|
|
|
-
|
|
|
- get_option(&arg, &num);
|
|
|
-
|
|
|
- if (num > 0)
|
|
|
- show_msr = num;
|
|
|
- return 1;
|
|
|
-}
|
|
|
-__setup("show_msr=", setup_show_msr);
|
|
|
-
|
|
|
static __init int setup_noclflush(char *arg)
|
|
|
{
|
|
|
setup_clear_cpu_cap(X86_FEATURE_CLFLUSH);
|
|
@@ -1240,14 +1195,6 @@ void print_cpu_info(struct cpuinfo_x86 *c)
|
|
|
pr_cont(", stepping: 0x%x)\n", c->x86_mask);
|
|
|
else
|
|
|
pr_cont(")\n");
|
|
|
-
|
|
|
- print_cpu_msr(c);
|
|
|
-}
|
|
|
-
|
|
|
-void print_cpu_msr(struct cpuinfo_x86 *c)
|
|
|
-{
|
|
|
- if (c->cpu_index < show_msr)
|
|
|
- __print_cpu_msr();
|
|
|
}
|
|
|
|
|
|
static __init int setup_disablecpuid(char *arg)
|