diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 13:51:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 13:51:09 -0400 |
commit | 81a07d7588d376c530d006e24d7981304ce96e16 (patch) | |
tree | 1608e094c88b9702c86cf2e6f65339aab9ea3f3f /arch/x86_64/kernel/setup.c | |
parent | 8871e73fdbde07d0a41393f7ee30787b65387b36 (diff) | |
parent | 8501a2fbe762b21d2504ed3aca3b52be61b5e6e4 (diff) |
Merge branch 'x86-64'
* x86-64: (83 commits)
[PATCH] x86_64: x86_64 stack usage debugging
[PATCH] x86_64: (resend) x86_64 stack overflow debugging
[PATCH] x86_64: msi_apic.c build fix
[PATCH] x86_64: i386/x86-64 Add nmi watchdog support for new Intel CPUs
[PATCH] x86_64: Avoid broadcasting NMI IPIs
[PATCH] x86_64: fix apic error on bootup
[PATCH] x86_64: enlarge window for stack growth
[PATCH] x86_64: Minor string functions optimizations
[PATCH] x86_64: Move export symbols to their C functions
[PATCH] x86_64: Standardize i386/x86_64 handling of NMI_VECTOR
[PATCH] x86_64: Fix modular pc speaker
[PATCH] x86_64: remove sys32_ni_syscall()
[PATCH] x86_64: Do not use -ffunction-sections for modules
[PATCH] x86_64: Add cpu_relax to apic_wait_icr_idle
[PATCH] x86_64: adjust kstack_depth_to_print default
[PATCH] i386/x86-64: adjust /proc/interrupts column headings
[PATCH] x86_64: Fix race in cpu_local_* on preemptible kernels
[PATCH] x86_64: Fix fast check in safe_smp_processor_id
[PATCH] x86_64: x86_64 setup.c - printing cmp related boottime information
[PATCH] i386/x86-64/ia64: Move polling flag into thread_info_status
...
Manual resolve of trivial conflict in arch/i386/kernel/Makefile
Diffstat (limited to 'arch/x86_64/kernel/setup.c')
-rw-r--r-- | arch/x86_64/kernel/setup.c | 180 |
1 files changed, 55 insertions, 125 deletions
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index 143c65031539..1129918ede82 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -5,8 +5,6 @@ | |||
5 | * | 5 | * |
6 | * Nov 2001 Dave Jones <davej@suse.de> | 6 | * Nov 2001 Dave Jones <davej@suse.de> |
7 | * Forked from i386 setup code. | 7 | * Forked from i386 setup code. |
8 | * | ||
9 | * $Id$ | ||
10 | */ | 8 | */ |
11 | 9 | ||
12 | /* | 10 | /* |
@@ -65,9 +63,7 @@ | |||
65 | #include <asm/setup.h> | 63 | #include <asm/setup.h> |
66 | #include <asm/mach_apic.h> | 64 | #include <asm/mach_apic.h> |
67 | #include <asm/numa.h> | 65 | #include <asm/numa.h> |
68 | #include <asm/swiotlb.h> | ||
69 | #include <asm/sections.h> | 66 | #include <asm/sections.h> |
70 | #include <asm/gart-mapping.h> | ||
71 | #include <asm/dmi.h> | 67 | #include <asm/dmi.h> |
72 | 68 | ||
73 | /* | 69 | /* |
@@ -75,6 +71,7 @@ | |||
75 | */ | 71 | */ |
76 | 72 | ||
77 | struct cpuinfo_x86 boot_cpu_data __read_mostly; | 73 | struct cpuinfo_x86 boot_cpu_data __read_mostly; |
74 | EXPORT_SYMBOL(boot_cpu_data); | ||
78 | 75 | ||
79 | unsigned long mmu_cr4_features; | 76 | unsigned long mmu_cr4_features; |
80 | 77 | ||
@@ -103,6 +100,7 @@ char dmi_alloc_data[DMI_MAX_DATA]; | |||
103 | * Setup options | 100 | * Setup options |
104 | */ | 101 | */ |
105 | struct screen_info screen_info; | 102 | struct screen_info screen_info; |
103 | EXPORT_SYMBOL(screen_info); | ||
106 | struct sys_desc_table_struct { | 104 | struct sys_desc_table_struct { |
107 | unsigned short length; | 105 | unsigned short length; |
108 | unsigned char table[0]; | 106 | unsigned char table[0]; |
@@ -474,80 +472,6 @@ contig_initmem_init(unsigned long start_pfn, unsigned long end_pfn) | |||
474 | } | 472 | } |
475 | #endif | 473 | #endif |
476 | 474 | ||
477 | /* Use inline assembly to define this because the nops are defined | ||
478 | as inline assembly strings in the include files and we cannot | ||
479 | get them easily into strings. */ | ||
480 | asm("\t.data\nk8nops: " | ||
481 | K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 | ||
482 | K8_NOP7 K8_NOP8); | ||
483 | |||
484 | extern unsigned char k8nops[]; | ||
485 | static unsigned char *k8_nops[ASM_NOP_MAX+1] = { | ||
486 | NULL, | ||
487 | k8nops, | ||
488 | k8nops + 1, | ||
489 | k8nops + 1 + 2, | ||
490 | k8nops + 1 + 2 + 3, | ||
491 | k8nops + 1 + 2 + 3 + 4, | ||
492 | k8nops + 1 + 2 + 3 + 4 + 5, | ||
493 | k8nops + 1 + 2 + 3 + 4 + 5 + 6, | ||
494 | k8nops + 1 + 2 + 3 + 4 + 5 + 6 + 7, | ||
495 | }; | ||
496 | |||
497 | extern char __vsyscall_0; | ||
498 | |||
499 | /* Replace instructions with better alternatives for this CPU type. | ||
500 | |||
501 | This runs before SMP is initialized to avoid SMP problems with | ||
502 | self modifying code. This implies that assymetric systems where | ||
503 | APs have less capabilities than the boot processor are not handled. | ||
504 | In this case boot with "noreplacement". */ | ||
505 | void apply_alternatives(void *start, void *end) | ||
506 | { | ||
507 | struct alt_instr *a; | ||
508 | int diff, i, k; | ||
509 | for (a = start; (void *)a < end; a++) { | ||
510 | u8 *instr; | ||
511 | |||
512 | if (!boot_cpu_has(a->cpuid)) | ||
513 | continue; | ||
514 | |||
515 | BUG_ON(a->replacementlen > a->instrlen); | ||
516 | instr = a->instr; | ||
517 | /* vsyscall code is not mapped yet. resolve it manually. */ | ||
518 | if (instr >= (u8 *)VSYSCALL_START && instr < (u8*)VSYSCALL_END) | ||
519 | instr = __va(instr - (u8*)VSYSCALL_START + (u8*)__pa_symbol(&__vsyscall_0)); | ||
520 | __inline_memcpy(instr, a->replacement, a->replacementlen); | ||
521 | diff = a->instrlen - a->replacementlen; | ||
522 | |||
523 | /* Pad the rest with nops */ | ||
524 | for (i = a->replacementlen; diff > 0; diff -= k, i += k) { | ||
525 | k = diff; | ||
526 | if (k > ASM_NOP_MAX) | ||
527 | k = ASM_NOP_MAX; | ||
528 | __inline_memcpy(instr + i, k8_nops[k], k); | ||
529 | } | ||
530 | } | ||
531 | } | ||
532 | |||
533 | static int no_replacement __initdata = 0; | ||
534 | |||
535 | void __init alternative_instructions(void) | ||
536 | { | ||
537 | extern struct alt_instr __alt_instructions[], __alt_instructions_end[]; | ||
538 | if (no_replacement) | ||
539 | return; | ||
540 | apply_alternatives(__alt_instructions, __alt_instructions_end); | ||
541 | } | ||
542 | |||
543 | static int __init noreplacement_setup(char *s) | ||
544 | { | ||
545 | no_replacement = 1; | ||
546 | return 1; | ||
547 | } | ||
548 | |||
549 | __setup("noreplacement", noreplacement_setup); | ||
550 | |||
551 | #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) | 475 | #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) |
552 | struct edd edd; | 476 | struct edd edd; |
553 | #ifdef CONFIG_EDD_MODULE | 477 | #ifdef CONFIG_EDD_MODULE |
@@ -780,10 +704,6 @@ void __init setup_arch(char **cmdline_p) | |||
780 | 704 | ||
781 | e820_setup_gap(); | 705 | e820_setup_gap(); |
782 | 706 | ||
783 | #ifdef CONFIG_GART_IOMMU | ||
784 | iommu_hole_init(); | ||
785 | #endif | ||
786 | |||
787 | #ifdef CONFIG_VT | 707 | #ifdef CONFIG_VT |
788 | #if defined(CONFIG_VGA_CONSOLE) | 708 | #if defined(CONFIG_VGA_CONSOLE) |
789 | conswitchp = &vga_con; | 709 | conswitchp = &vga_con; |
@@ -868,24 +788,32 @@ static int nearby_node(int apicid) | |||
868 | static void __init amd_detect_cmp(struct cpuinfo_x86 *c) | 788 | static void __init amd_detect_cmp(struct cpuinfo_x86 *c) |
869 | { | 789 | { |
870 | #ifdef CONFIG_SMP | 790 | #ifdef CONFIG_SMP |
871 | int cpu = smp_processor_id(); | ||
872 | unsigned bits; | 791 | unsigned bits; |
873 | #ifdef CONFIG_NUMA | 792 | #ifdef CONFIG_NUMA |
793 | int cpu = smp_processor_id(); | ||
874 | int node = 0; | 794 | int node = 0; |
875 | unsigned apicid = hard_smp_processor_id(); | 795 | unsigned apicid = hard_smp_processor_id(); |
876 | #endif | 796 | #endif |
797 | unsigned ecx = cpuid_ecx(0x80000008); | ||
798 | |||
799 | c->x86_max_cores = (ecx & 0xff) + 1; | ||
877 | 800 | ||
878 | bits = 0; | 801 | /* CPU telling us the core id bits shift? */ |
879 | while ((1 << bits) < c->x86_max_cores) | 802 | bits = (ecx >> 12) & 0xF; |
880 | bits++; | 803 | |
804 | /* Otherwise recompute */ | ||
805 | if (bits == 0) { | ||
806 | while ((1 << bits) < c->x86_max_cores) | ||
807 | bits++; | ||
808 | } | ||
881 | 809 | ||
882 | /* Low order bits define the core id (index of core in socket) */ | 810 | /* Low order bits define the core id (index of core in socket) */ |
883 | cpu_core_id[cpu] = phys_proc_id[cpu] & ((1 << bits)-1); | 811 | c->cpu_core_id = c->phys_proc_id & ((1 << bits)-1); |
884 | /* Convert the APIC ID into the socket ID */ | 812 | /* Convert the APIC ID into the socket ID */ |
885 | phys_proc_id[cpu] = phys_pkg_id(bits); | 813 | c->phys_proc_id = phys_pkg_id(bits); |
886 | 814 | ||
887 | #ifdef CONFIG_NUMA | 815 | #ifdef CONFIG_NUMA |
888 | node = phys_proc_id[cpu]; | 816 | node = c->phys_proc_id; |
889 | if (apicid_to_node[apicid] != NUMA_NO_NODE) | 817 | if (apicid_to_node[apicid] != NUMA_NO_NODE) |
890 | node = apicid_to_node[apicid]; | 818 | node = apicid_to_node[apicid]; |
891 | if (!node_online(node)) { | 819 | if (!node_online(node)) { |
@@ -898,7 +826,7 @@ static void __init amd_detect_cmp(struct cpuinfo_x86 *c) | |||
898 | but in the same order as the HT nodeids. | 826 | but in the same order as the HT nodeids. |
899 | If that doesn't result in a usable node fall back to the | 827 | If that doesn't result in a usable node fall back to the |
900 | path for the previous case. */ | 828 | path for the previous case. */ |
901 | int ht_nodeid = apicid - (phys_proc_id[0] << bits); | 829 | int ht_nodeid = apicid - (cpu_data[0].phys_proc_id << bits); |
902 | if (ht_nodeid >= 0 && | 830 | if (ht_nodeid >= 0 && |
903 | apicid_to_node[ht_nodeid] != NUMA_NO_NODE) | 831 | apicid_to_node[ht_nodeid] != NUMA_NO_NODE) |
904 | node = apicid_to_node[ht_nodeid]; | 832 | node = apicid_to_node[ht_nodeid]; |
@@ -908,15 +836,13 @@ static void __init amd_detect_cmp(struct cpuinfo_x86 *c) | |||
908 | } | 836 | } |
909 | numa_set_node(cpu, node); | 837 | numa_set_node(cpu, node); |
910 | 838 | ||
911 | printk(KERN_INFO "CPU %d/%x(%d) -> Node %d -> Core %d\n", | 839 | printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node); |
912 | cpu, apicid, c->x86_max_cores, node, cpu_core_id[cpu]); | ||
913 | #endif | 840 | #endif |
914 | #endif | 841 | #endif |
915 | } | 842 | } |
916 | 843 | ||
917 | static int __init init_amd(struct cpuinfo_x86 *c) | 844 | static void __init init_amd(struct cpuinfo_x86 *c) |
918 | { | 845 | { |
919 | int r; | ||
920 | unsigned level; | 846 | unsigned level; |
921 | 847 | ||
922 | #ifdef CONFIG_SMP | 848 | #ifdef CONFIG_SMP |
@@ -949,8 +875,8 @@ static int __init init_amd(struct cpuinfo_x86 *c) | |||
949 | if (c->x86 >= 6) | 875 | if (c->x86 >= 6) |
950 | set_bit(X86_FEATURE_FXSAVE_LEAK, &c->x86_capability); | 876 | set_bit(X86_FEATURE_FXSAVE_LEAK, &c->x86_capability); |
951 | 877 | ||
952 | r = get_model_name(c); | 878 | level = get_model_name(c); |
953 | if (!r) { | 879 | if (!level) { |
954 | switch (c->x86) { | 880 | switch (c->x86) { |
955 | case 15: | 881 | case 15: |
956 | /* Should distinguish Models here, but this is only | 882 | /* Should distinguish Models here, but this is only |
@@ -965,13 +891,12 @@ static int __init init_amd(struct cpuinfo_x86 *c) | |||
965 | if (c->x86_power & (1<<8)) | 891 | if (c->x86_power & (1<<8)) |
966 | set_bit(X86_FEATURE_CONSTANT_TSC, &c->x86_capability); | 892 | set_bit(X86_FEATURE_CONSTANT_TSC, &c->x86_capability); |
967 | 893 | ||
968 | if (c->extended_cpuid_level >= 0x80000008) { | 894 | /* Multi core CPU? */ |
969 | c->x86_max_cores = (cpuid_ecx(0x80000008) & 0xff) + 1; | 895 | if (c->extended_cpuid_level >= 0x80000008) |
970 | |||
971 | amd_detect_cmp(c); | 896 | amd_detect_cmp(c); |
972 | } | ||
973 | 897 | ||
974 | return r; | 898 | /* Fix cpuid4 emulation for more */ |
899 | num_cache_leaves = 3; | ||
975 | } | 900 | } |
976 | 901 | ||
977 | static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | 902 | static void __cpuinit detect_ht(struct cpuinfo_x86 *c) |
@@ -979,13 +904,14 @@ static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
979 | #ifdef CONFIG_SMP | 904 | #ifdef CONFIG_SMP |
980 | u32 eax, ebx, ecx, edx; | 905 | u32 eax, ebx, ecx, edx; |
981 | int index_msb, core_bits; | 906 | int index_msb, core_bits; |
982 | int cpu = smp_processor_id(); | ||
983 | 907 | ||
984 | cpuid(1, &eax, &ebx, &ecx, &edx); | 908 | cpuid(1, &eax, &ebx, &ecx, &edx); |
985 | 909 | ||
986 | 910 | ||
987 | if (!cpu_has(c, X86_FEATURE_HT) || cpu_has(c, X86_FEATURE_CMP_LEGACY)) | 911 | if (!cpu_has(c, X86_FEATURE_HT)) |
988 | return; | 912 | return; |
913 | if (cpu_has(c, X86_FEATURE_CMP_LEGACY)) | ||
914 | goto out; | ||
989 | 915 | ||
990 | smp_num_siblings = (ebx & 0xff0000) >> 16; | 916 | smp_num_siblings = (ebx & 0xff0000) >> 16; |
991 | 917 | ||
@@ -1000,10 +926,7 @@ static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
1000 | } | 926 | } |
1001 | 927 | ||
1002 | index_msb = get_count_order(smp_num_siblings); | 928 | index_msb = get_count_order(smp_num_siblings); |
1003 | phys_proc_id[cpu] = phys_pkg_id(index_msb); | 929 | c->phys_proc_id = phys_pkg_id(index_msb); |
1004 | |||
1005 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", | ||
1006 | phys_proc_id[cpu]); | ||
1007 | 930 | ||
1008 | smp_num_siblings = smp_num_siblings / c->x86_max_cores; | 931 | smp_num_siblings = smp_num_siblings / c->x86_max_cores; |
1009 | 932 | ||
@@ -1011,13 +934,15 @@ static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
1011 | 934 | ||
1012 | core_bits = get_count_order(c->x86_max_cores); | 935 | core_bits = get_count_order(c->x86_max_cores); |
1013 | 936 | ||
1014 | cpu_core_id[cpu] = phys_pkg_id(index_msb) & | 937 | c->cpu_core_id = phys_pkg_id(index_msb) & |
1015 | ((1 << core_bits) - 1); | 938 | ((1 << core_bits) - 1); |
1016 | |||
1017 | if (c->x86_max_cores > 1) | ||
1018 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", | ||
1019 | cpu_core_id[cpu]); | ||
1020 | } | 939 | } |
940 | out: | ||
941 | if ((c->x86_max_cores * smp_num_siblings) > 1) { | ||
942 | printk(KERN_INFO "CPU: Physical Processor ID: %d\n", c->phys_proc_id); | ||
943 | printk(KERN_INFO "CPU: Processor Core ID: %d\n", c->cpu_core_id); | ||
944 | } | ||
945 | |||
1021 | #endif | 946 | #endif |
1022 | } | 947 | } |
1023 | 948 | ||
@@ -1026,15 +951,12 @@ static void __cpuinit detect_ht(struct cpuinfo_x86 *c) | |||
1026 | */ | 951 | */ |
1027 | static int __cpuinit intel_num_cpu_cores(struct cpuinfo_x86 *c) | 952 | static int __cpuinit intel_num_cpu_cores(struct cpuinfo_x86 *c) |
1028 | { | 953 | { |
1029 | unsigned int eax; | 954 | unsigned int eax, t; |
1030 | 955 | ||
1031 | if (c->cpuid_level < 4) | 956 | if (c->cpuid_level < 4) |
1032 | return 1; | 957 | return 1; |
1033 | 958 | ||
1034 | __asm__("cpuid" | 959 | cpuid_count(4, 0, &eax, &t, &t, &t); |
1035 | : "=a" (eax) | ||
1036 | : "0" (4), "c" (0) | ||
1037 | : "bx", "dx"); | ||
1038 | 960 | ||
1039 | if (eax & 0x1f) | 961 | if (eax & 0x1f) |
1040 | return ((eax >> 26) + 1); | 962 | return ((eax >> 26) + 1); |
@@ -1047,16 +969,17 @@ static void srat_detect_node(void) | |||
1047 | #ifdef CONFIG_NUMA | 969 | #ifdef CONFIG_NUMA |
1048 | unsigned node; | 970 | unsigned node; |
1049 | int cpu = smp_processor_id(); | 971 | int cpu = smp_processor_id(); |
972 | int apicid = hard_smp_processor_id(); | ||
1050 | 973 | ||
1051 | /* Don't do the funky fallback heuristics the AMD version employs | 974 | /* Don't do the funky fallback heuristics the AMD version employs |
1052 | for now. */ | 975 | for now. */ |
1053 | node = apicid_to_node[hard_smp_processor_id()]; | 976 | node = apicid_to_node[apicid]; |
1054 | if (node == NUMA_NO_NODE) | 977 | if (node == NUMA_NO_NODE) |
1055 | node = first_node(node_online_map); | 978 | node = first_node(node_online_map); |
1056 | numa_set_node(cpu, node); | 979 | numa_set_node(cpu, node); |
1057 | 980 | ||
1058 | if (acpi_numa > 0) | 981 | if (acpi_numa > 0) |
1059 | printk(KERN_INFO "CPU %d -> Node %d\n", cpu, node); | 982 | printk(KERN_INFO "CPU %d/%x -> Node %d\n", cpu, apicid, node); |
1060 | #endif | 983 | #endif |
1061 | } | 984 | } |
1062 | 985 | ||
@@ -1066,6 +989,13 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c) | |||
1066 | unsigned n; | 989 | unsigned n; |
1067 | 990 | ||
1068 | init_intel_cacheinfo(c); | 991 | init_intel_cacheinfo(c); |
992 | if (c->cpuid_level > 9 ) { | ||
993 | unsigned eax = cpuid_eax(10); | ||
994 | /* Check for version and the number of counters */ | ||
995 | if ((eax & 0xff) && (((eax>>8) & 0xff) > 1)) | ||
996 | set_bit(X86_FEATURE_ARCH_PERFMON, &c->x86_capability); | ||
997 | } | ||
998 | |||
1069 | n = c->extended_cpuid_level; | 999 | n = c->extended_cpuid_level; |
1070 | if (n >= 0x80000008) { | 1000 | if (n >= 0x80000008) { |
1071 | unsigned eax = cpuid_eax(0x80000008); | 1001 | unsigned eax = cpuid_eax(0x80000008); |
@@ -1157,7 +1087,7 @@ void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c) | |||
1157 | } | 1087 | } |
1158 | 1088 | ||
1159 | #ifdef CONFIG_SMP | 1089 | #ifdef CONFIG_SMP |
1160 | phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; | 1090 | c->phys_proc_id = (cpuid_ebx(1) >> 24) & 0xff; |
1161 | #endif | 1091 | #endif |
1162 | } | 1092 | } |
1163 | 1093 | ||
@@ -1284,7 +1214,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
1284 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1214 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1285 | NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL, | 1215 | NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL, |
1286 | NULL, NULL, NULL, NULL, "nx", NULL, "mmxext", NULL, | 1216 | NULL, NULL, NULL, NULL, "nx", NULL, "mmxext", NULL, |
1287 | NULL, "fxsr_opt", "rdtscp", NULL, NULL, "lm", "3dnowext", "3dnow", | 1217 | NULL, "fxsr_opt", NULL, "rdtscp", NULL, "lm", "3dnowext", "3dnow", |
1288 | 1218 | ||
1289 | /* Transmeta-defined */ | 1219 | /* Transmeta-defined */ |
1290 | "recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL, | 1220 | "recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL, |
@@ -1295,7 +1225,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
1295 | /* Other (Linux-defined) */ | 1225 | /* Other (Linux-defined) */ |
1296 | "cxmmx", NULL, "cyrix_arr", "centaur_mcr", NULL, | 1226 | "cxmmx", NULL, "cyrix_arr", "centaur_mcr", NULL, |
1297 | "constant_tsc", NULL, NULL, | 1227 | "constant_tsc", NULL, NULL, |
1298 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1228 | "up", NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1299 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1229 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1300 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 1230 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
1301 | 1231 | ||
@@ -1365,9 +1295,9 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
1365 | #ifdef CONFIG_SMP | 1295 | #ifdef CONFIG_SMP |
1366 | if (smp_num_siblings * c->x86_max_cores > 1) { | 1296 | if (smp_num_siblings * c->x86_max_cores > 1) { |
1367 | int cpu = c - cpu_data; | 1297 | int cpu = c - cpu_data; |
1368 | seq_printf(m, "physical id\t: %d\n", phys_proc_id[cpu]); | 1298 | seq_printf(m, "physical id\t: %d\n", c->phys_proc_id); |
1369 | seq_printf(m, "siblings\t: %d\n", cpus_weight(cpu_core_map[cpu])); | 1299 | seq_printf(m, "siblings\t: %d\n", cpus_weight(cpu_core_map[cpu])); |
1370 | seq_printf(m, "core id\t\t: %d\n", cpu_core_id[cpu]); | 1300 | seq_printf(m, "core id\t\t: %d\n", c->cpu_core_id); |
1371 | seq_printf(m, "cpu cores\t: %d\n", c->booted_cores); | 1301 | seq_printf(m, "cpu cores\t: %d\n", c->booted_cores); |
1372 | } | 1302 | } |
1373 | #endif | 1303 | #endif |
@@ -1441,7 +1371,7 @@ struct seq_operations cpuinfo_op = { | |||
1441 | .show = show_cpuinfo, | 1371 | .show = show_cpuinfo, |
1442 | }; | 1372 | }; |
1443 | 1373 | ||
1444 | #ifdef CONFIG_INPUT_PCSPKR | 1374 | #if defined(CONFIG_INPUT_PCSPKR) || defined(CONFIG_INPUT_PCSPKR_MODULE) |
1445 | #include <linux/platform_device.h> | 1375 | #include <linux/platform_device.h> |
1446 | static __init int add_pcspkr(void) | 1376 | static __init int add_pcspkr(void) |
1447 | { | 1377 | { |