1 #include <linux/bootmem.h> 2 #include <linux/linkage.h> 3 #include <linux/bitops.h> 4 #include <linux/kernel.h> 5 #include <linux/module.h> 6 #include <linux/percpu.h> 7 #include <linux/string.h> 8 #include <linux/delay.h> 9 #include <linux/sched.h> 10 #include <linux/init.h> 11 #include <linux/kgdb.h> 12 #include <linux/smp.h> 13 #include <linux/io.h> 14 15 #include <asm/stackprotector.h> 16 #include <asm/mmu_context.h> 17 #include <asm/hypervisor.h> 18 #include <asm/processor.h> 19 #include <asm/sections.h> 20 #include <asm/topology.h> 21 #include <asm/cpumask.h> 22 #include <asm/pgtable.h> 23 #include <asm/atomic.h> 24 #include <asm/proto.h> 25 #include <asm/setup.h> 26 #include <asm/apic.h> 27 #include <asm/desc.h> 28 #include <asm/i387.h> 29 #include <asm/mtrr.h> 30 #include <asm/numa.h> 31 #include <asm/asm.h> 32 #include <asm/cpu.h> 33 #include <asm/mce.h> 34 #include <asm/msr.h> 35 #include <asm/pat.h> 36 #include <asm/smp.h> 37 38 #ifdef CONFIG_X86_LOCAL_APIC 39 #include <asm/uv/uv.h> 40 #endif 41 42 #include "cpu.h" 43 44 /* all of these masks are initialized in setup_cpu_local_masks() */ 45 cpumask_var_t cpu_initialized_mask; 46 cpumask_var_t cpu_callout_mask; 47 cpumask_var_t cpu_callin_mask; 48 49 /* representing cpus for which sibling maps can be computed */ 50 cpumask_var_t cpu_sibling_setup_mask; 51 52 /* correctly size the local cpu masks */ 53 void __init setup_cpu_local_masks(void) 54 { 55 alloc_bootmem_cpumask_var(&cpu_initialized_mask); 56 alloc_bootmem_cpumask_var(&cpu_callin_mask); 57 alloc_bootmem_cpumask_var(&cpu_callout_mask); 58 alloc_bootmem_cpumask_var(&cpu_sibling_setup_mask); 59 } 60 61 static const struct cpu_dev *this_cpu __cpuinitdata; 62 63 DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { 64 #ifdef CONFIG_X86_64 65 /* 66 * We need valid kernel segments for data and code in long mode too 67 * IRET will check the segment types kkeil 2000/10/28 68 * Also sysret mandates a special GDT layout 69 * 70 * TLS descriptors are currently at a different place compared to i386. 71 * Hopefully nobody expects them at a fixed place (Wine?) 72 */ 73 [GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } }, 74 [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } }, 75 [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } }, 76 [GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } }, 77 [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } }, 78 [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } }, 79 #else 80 [GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } }, 81 [GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } }, 82 [GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } }, 83 [GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } }, 84 /* 85 * Segments used for calling PnP BIOS have byte granularity. 86 * They code segments and data segments have fixed 64k limits, 87 * the transfer segment sizes are set at run time. 88 */ 89 /* 32-bit code */ 90 [GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } }, 91 /* 16-bit code */ 92 [GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } }, 93 /* 16-bit data */ 94 [GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } }, 95 /* 16-bit data */ 96 [GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } }, 97 /* 16-bit data */ 98 [GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } }, 99 /* 100 * The APM segments have byte granularity and their bases 101 * are set at run time. All have 64k limits. 102 */ 103 /* 32-bit code */ 104 [GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } }, 105 /* 16-bit code */ 106 [GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } }, 107 /* data */ 108 [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } }, 109 110 [GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } }, 111 [GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } }, 112 GDT_STACK_CANARY_INIT 113 #endif 114 } }; 115 EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); 116 117 static int __init x86_xsave_setup(char *s) 118 { 119 setup_clear_cpu_cap(X86_FEATURE_XSAVE); 120 return 1; 121 } 122 __setup("noxsave", x86_xsave_setup); 123 124 #ifdef CONFIG_X86_32 125 static int cachesize_override __cpuinitdata = -1; 126 static int disable_x86_serial_nr __cpuinitdata = 1; 127 128 static int __init cachesize_setup(char *str) 129 { 130 get_option(&str, &cachesize_override); 131 return 1; 132 } 133 __setup("cachesize=", cachesize_setup); 134 135 static int __init x86_fxsr_setup(char *s) 136 { 137 setup_clear_cpu_cap(X86_FEATURE_FXSR); 138 setup_clear_cpu_cap(X86_FEATURE_XMM); 139 return 1; 140 } 141 __setup("nofxsr", x86_fxsr_setup); 142 143 static int __init x86_sep_setup(char *s) 144 { 145 setup_clear_cpu_cap(X86_FEATURE_SEP); 146 return 1; 147 } 148 __setup("nosep", x86_sep_setup); 149 150 /* Standard macro to see if a specific flag is changeable */ 151 static inline int flag_is_changeable_p(u32 flag) 152 { 153 u32 f1, f2; 154 155 /* 156 * Cyrix and IDT cpus allow disabling of CPUID 157 * so the code below may return different results 158 * when it is executed before and after enabling 159 * the CPUID. Add "volatile" to not allow gcc to 160 * optimize the subsequent calls to this function. 161 */ 162 asm volatile ("pushfl \n\t" 163 "pushfl \n\t" 164 "popl %0 \n\t" 165 "movl %0, %1 \n\t" 166 "xorl %2, %0 \n\t" 167 "pushl %0 \n\t" 168 "popfl \n\t" 169 "pushfl \n\t" 170 "popl %0 \n\t" 171 "popfl \n\t" 172 173 : "=&r" (f1), "=&r" (f2) 174 : "ir" (flag)); 175 176 return ((f1^f2) & flag) != 0; 177 } 178 179 /* Probe for the CPUID instruction */ 180 static int __cpuinit have_cpuid_p(void) 181 { 182 return flag_is_changeable_p(X86_EFLAGS_ID); 183 } 184 185 static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) 186 { 187 unsigned long lo, hi; 188 189 if (!cpu_has(c, X86_FEATURE_PN) || !disable_x86_serial_nr) 190 return; 191 192 /* Disable processor serial number: */ 193 194 rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi); 195 lo |= 0x200000; 196 wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi); 197 198 printk(KERN_NOTICE "CPU serial number disabled.\n"); 199 clear_cpu_cap(c, X86_FEATURE_PN); 200 201 /* Disabling the serial number may affect the cpuid level */ 202 c->cpuid_level = cpuid_eax(0); 203 } 204 205 static int __init x86_serial_nr_setup(char *s) 206 { 207 disable_x86_serial_nr = 0; 208 return 1; 209 } 210 __setup("serialnumber", x86_serial_nr_setup); 211 #else 212 static inline int flag_is_changeable_p(u32 flag) 213 { 214 return 1; 215 } 216 /* Probe for the CPUID instruction */ 217 static inline int have_cpuid_p(void) 218 { 219 return 1; 220 } 221 static inline void squash_the_stupid_serial_number(struct cpuinfo_x86 *c) 222 { 223 } 224 #endif 225 226 /* 227 * Some CPU features depend on higher CPUID levels, which may not always 228 * be available due to CPUID level capping or broken virtualization 229 * software. Add those features to this table to auto-disable them. 230 */ 231 struct cpuid_dependent_feature { 232 u32 feature; 233 u32 level; 234 }; 235 236 static const struct cpuid_dependent_feature __cpuinitconst 237 cpuid_dependent_features[] = { 238 { X86_FEATURE_MWAIT, 0x00000005 }, 239 { X86_FEATURE_DCA, 0x00000009 }, 240 { X86_FEATURE_XSAVE, 0x0000000d }, 241 { 0, 0 } 242 }; 243 244 static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn) 245 { 246 const struct cpuid_dependent_feature *df; 247 248 for (df = cpuid_dependent_features; df->feature; df++) { 249 250 if (!cpu_has(c, df->feature)) 251 continue; 252 /* 253 * Note: cpuid_level is set to -1 if unavailable, but 254 * extended_extended_level is set to 0 if unavailable 255 * and the legitimate extended levels are all negative 256 * when signed; hence the weird messing around with 257 * signs here... 258 */ 259 if (!((s32)df->level < 0 ? 260 (u32)df->level > (u32)c->extended_cpuid_level : 261 (s32)df->level > (s32)c->cpuid_level)) 262 continue; 263 264 clear_cpu_cap(c, df->feature); 265 if (!warn) 266 continue; 267 268 printk(KERN_WARNING 269 "CPU: CPU feature %s disabled, no CPUID level 0x%x\n", 270 x86_cap_flags[df->feature], df->level); 271 } 272 } 273 274 /* 275 * Naming convention should be: <Name> [(<Codename>)] 276 * This table only is used unless init_<vendor>() below doesn't set it; 277 * in particular, if CPUID levels 0x80000002..4 are supported, this 278 * isn't used 279 */ 280 281 /* Look up CPU names by table lookup. */ 282 static const char *__cpuinit table_lookup_model(struct cpuinfo_x86 *c) 283 { 284 const struct cpu_model_info *info; 285 286 if (c->x86_model >= 16) 287 return NULL; /* Range check */ 288 289 if (!this_cpu) 290 return NULL; 291 292 info = this_cpu->c_models; 293 294 while (info && info->family) { 295 if (info->family == c->x86) 296 return info->model_names[c->x86_model]; 297 info++; 298 } 299 return NULL; /* Not found */ 300 } 301 302 __u32 cleared_cpu_caps[NCAPINTS] __cpuinitdata; 303 304 void load_percpu_segment(int cpu) 305 { 306 #ifdef CONFIG_X86_32 307 loadsegment(fs, __KERNEL_PERCPU); 308 #else 309 loadsegment(gs, 0); 310 wrmsrl(MSR_GS_BASE, (unsigned long)per_cpu(irq_stack_union.gs_base, cpu)); 311 #endif 312 load_stack_canary_segment(); 313 } 314 315 /* 316 * Current gdt points %fs at the "master" per-cpu area: after this, 317 * it's on the real one. 318 */ 319 void switch_to_new_gdt(int cpu) 320 { 321 struct desc_ptr gdt_descr; 322 323 gdt_descr.address = (long)get_cpu_gdt_table(cpu); 324 gdt_descr.size = GDT_SIZE - 1; 325 load_gdt(&gdt_descr); 326 /* Reload the per-cpu base */ 327 328 load_percpu_segment(cpu); 329 } 330 331 static const struct cpu_dev *__cpuinitdata cpu_devs[X86_VENDOR_NUM] = {}; 332 333 static void __cpuinit default_init(struct cpuinfo_x86 *c) 334 { 335 #ifdef CONFIG_X86_64 336 display_cacheinfo(c); 337 #else 338 /* Not much we can do here... */ 339 /* Check if at least it has cpuid */ 340 if (c->cpuid_level == -1) { 341 /* No cpuid. It must be an ancient CPU */ 342 if (c->x86 == 4) 343 strcpy(c->x86_model_id, "486"); 344 else if (c->x86 == 3) 345 strcpy(c->x86_model_id, "386"); 346 } 347 #endif 348 } 349 350 static const struct cpu_dev __cpuinitconst default_cpu = { 351 .c_init = default_init, 352 .c_vendor = "Unknown", 353 .c_x86_vendor = X86_VENDOR_UNKNOWN, 354 }; 355 356 static void __cpuinit get_model_name(struct cpuinfo_x86 *c) 357 { 358 unsigned int *v; 359 char *p, *q; 360 361 if (c->extended_cpuid_level < 0x80000004) 362 return; 363 364 v = (unsigned int *)c->x86_model_id; 365 cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); 366 cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); 367 cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); 368 c->x86_model_id[48] = 0; 369 370 /* 371 * Intel chips right-justify this string for some dumb reason; 372 * undo that brain damage: 373 */ 374 p = q = &c->x86_model_id[0]; 375 while (*p == ' ') 376 p++; 377 if (p != q) { 378 while (*p) 379 *q++ = *p++; 380 while (q <= &c->x86_model_id[48]) 381 *q++ = '\0'; /* Zero-pad the rest */ 382 } 383 } 384 385 void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c) 386 { 387 unsigned int n, dummy, ebx, ecx, edx, l2size; 388 389 n = c->extended_cpuid_level; 390 391 if (n >= 0x80000005) { 392 cpuid(0x80000005, &dummy, &ebx, &ecx, &edx); 393 printk(KERN_INFO "CPU: L1 I Cache: %dK (%d bytes/line), D cache %dK (%d bytes/line)\n", 394 edx>>24, edx&0xFF, ecx>>24, ecx&0xFF); 395 c->x86_cache_size = (ecx>>24) + (edx>>24); 396 #ifdef CONFIG_X86_64 397 /* On K8 L1 TLB is inclusive, so don't count it */ 398 c->x86_tlbsize = 0; 399 #endif 400 } 401 402 if (n < 0x80000006) /* Some chips just has a large L1. */ 403 return; 404 405 cpuid(0x80000006, &dummy, &ebx, &ecx, &edx); 406 l2size = ecx >> 16; 407 408 #ifdef CONFIG_X86_64 409 c->x86_tlbsize += ((ebx >> 16) & 0xfff) + (ebx & 0xfff); 410 #else 411 /* do processor-specific cache resizing */ 412 if (this_cpu->c_size_cache) 413 l2size = this_cpu->c_size_cache(c, l2size); 414 415 /* Allow user to override all this if necessary. */ 416 if (cachesize_override != -1) 417 l2size = cachesize_override; 418 419 if (l2size == 0) 420 return; /* Again, no L2 cache is possible */ 421 #endif 422 423 c->x86_cache_size = l2size; 424 425 printk(KERN_INFO "CPU: L2 Cache: %dK (%d bytes/line)\n", 426 l2size, ecx & 0xFF); 427 } 428 429 void __cpuinit detect_ht(struct cpuinfo_x86 *c) 430 { 431 #ifdef CONFIG_X86_HT 432 u32 eax, ebx, ecx, edx; 433 int index_msb, core_bits; 434 435 if (!cpu_has(c, X86_FEATURE_HT)) 436 return; 437 438 if (cpu_has(c, X86_FEATURE_CMP_LEGACY)) 439 goto out; 440 441 if (cpu_has(c, X86_FEATURE_XTOPOLOGY)) 442 return; 443 444 cpuid(1, &eax, &ebx, &ecx, &edx); 445 446 smp_num_siblings = (ebx & 0xff0000) >> 16; 447 448 if (smp_num_siblings == 1) { 449 printk(KERN_INFO "CPU: Hyper-Threading is disabled\n"); 450 goto out; 451 } 452 453 if (smp_num_siblings <= 1) 454 goto out; 455 456 if (smp_num_siblings > nr_cpu_ids) { 457 pr_warning("CPU: Unsupported number of siblings %d", 458 smp_num_siblings); 459 smp_num_siblings = 1; 460 return; 461 } 462 463 index_msb = get_count_order(smp_num_siblings); 464 c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb); 465 466 smp_num_siblings = smp_num_siblings / c->x86_max_cores; 467 468 index_msb = get_count_order(smp_num_siblings); 469 470 core_bits = get_count_order(c->x86_max_cores); 471 472 c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) & 473 ((1 << core_bits) - 1); 474 475 out: 476 if ((c->x86_max_cores * smp_num_siblings) > 1) { 477 printk(KERN_INFO "CPU: Physical Processor ID: %d\n", 478 c->phys_proc_id); 479 printk(KERN_INFO "CPU: Processor Core ID: %d\n", 480 c->cpu_core_id); 481 } 482 #endif 483 } 484 485 static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c) 486 { 487 char *v = c->x86_vendor_id; 488 static int printed; 489 int i; 490 491 for (i = 0; i < X86_VENDOR_NUM; i++) { 492 if (!cpu_devs[i]) 493 break; 494 495 if (!strcmp(v, cpu_devs[i]->c_ident[0]) || 496 (cpu_devs[i]->c_ident[1] && 497 !strcmp(v, cpu_devs[i]->c_ident[1]))) { 498 499 this_cpu = cpu_devs[i]; 500 c->x86_vendor = this_cpu->c_x86_vendor; 501 return; 502 } 503 } 504 505 if (!printed) { 506 printed++; 507 printk(KERN_ERR 508 "CPU: vendor_id '%s' unknown, using generic init.\n", v); 509 510 printk(KERN_ERR "CPU: Your system may be unstable.\n"); 511 } 512 513 c->x86_vendor = X86_VENDOR_UNKNOWN; 514 this_cpu = &default_cpu; 515 } 516 517 void __cpuinit cpu_detect(struct cpuinfo_x86 *c) 518 { 519 /* Get vendor name */ 520 cpuid(0x00000000, (unsigned int *)&c->cpuid_level, 521 (unsigned int *)&c->x86_vendor_id[0], 522 (unsigned int *)&c->x86_vendor_id[8], 523 (unsigned int *)&c->x86_vendor_id[4]); 524 525 c->x86 = 4; 526 /* Intel-defined flags: level 0x00000001 */ 527 if (c->cpuid_level >= 0x00000001) { 528 u32 junk, tfms, cap0, misc; 529 530 cpuid(0x00000001, &tfms, &misc, &junk, &cap0); 531 c->x86 = (tfms >> 8) & 0xf; 532 c->x86_model = (tfms >> 4) & 0xf; 533 c->x86_mask = tfms & 0xf; 534 535 if (c->x86 == 0xf) 536 c->x86 += (tfms >> 20) & 0xff; 537 if (c->x86 >= 0x6) 538 c->x86_model += ((tfms >> 16) & 0xf) << 4; 539 540 if (cap0 & (1<<19)) { 541 c->x86_clflush_size = ((misc >> 8) & 0xff) * 8; 542 c->x86_cache_alignment = c->x86_clflush_size; 543 } 544 } 545 } 546 547 static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c) 548 { 549 u32 tfms, xlvl; 550 u32 ebx; 551 552 /* Intel-defined flags: level 0x00000001 */ 553 if (c->cpuid_level >= 0x00000001) { 554 u32 capability, excap; 555 556 cpuid(0x00000001, &tfms, &ebx, &excap, &capability); 557 c->x86_capability[0] = capability; 558 c->x86_capability[4] = excap; 559 } 560 561 /* AMD-defined flags: level 0x80000001 */ 562 xlvl = cpuid_eax(0x80000000); 563 c->extended_cpuid_level = xlvl; 564 565 if ((xlvl & 0xffff0000) == 0x80000000) { 566 if (xlvl >= 0x80000001) { 567 c->x86_capability[1] = cpuid_edx(0x80000001); 568 c->x86_capability[6] = cpuid_ecx(0x80000001); 569 } 570 } 571 572 if (c->extended_cpuid_level >= 0x80000008) { 573 u32 eax = cpuid_eax(0x80000008); 574 575 c->x86_virt_bits = (eax >> 8) & 0xff; 576 c->x86_phys_bits = eax & 0xff; 577 } 578 #ifdef CONFIG_X86_32 579 else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36)) 580 c->x86_phys_bits = 36; 581 #endif 582 583 if (c->extended_cpuid_level >= 0x80000007) 584 c->x86_power = cpuid_edx(0x80000007); 585 586 } 587 588 static void __cpuinit identify_cpu_without_cpuid(struct cpuinfo_x86 *c) 589 { 590 #ifdef CONFIG_X86_32 591 int i; 592 593 /* 594 * First of all, decide if this is a 486 or higher 595 * It's a 486 if we can modify the AC flag 596 */ 597 if (flag_is_changeable_p(X86_EFLAGS_AC)) 598 c->x86 = 4; 599 else 600 c->x86 = 3; 601 602 for (i = 0; i < X86_VENDOR_NUM; i++) 603 if (cpu_devs[i] && cpu_devs[i]->c_identify) { 604 c->x86_vendor_id[0] = 0; 605 cpu_devs[i]->c_identify(c); 606 if (c->x86_vendor_id[0]) { 607 get_cpu_vendor(c); 608 break; 609 } 610 } 611 #endif 612 } 613 614 /* 615 * Do minimum CPU detection early. 616 * Fields really needed: vendor, cpuid_level, family, model, mask, 617 * cache alignment. 618 * The others are not touched to avoid unwanted side effects. 619 * 620 * WARNING: this function is only called on the BP. Don't add code here 621 * that is supposed to run on all CPUs. 622 */ 623 static void __init early_identify_cpu(struct cpuinfo_x86 *c) 624 { 625 #ifdef CONFIG_X86_64 626 c->x86_clflush_size = 64; 627 c->x86_phys_bits = 36; 628 c->x86_virt_bits = 48; 629 #else 630 c->x86_clflush_size = 32; 631 c->x86_phys_bits = 32; 632 c->x86_virt_bits = 32; 633 #endif 634 c->x86_cache_alignment = c->x86_clflush_size; 635 636 memset(&c->x86_capability, 0, sizeof c->x86_capability); 637 c->extended_cpuid_level = 0; 638 639 if (!have_cpuid_p()) 640 identify_cpu_without_cpuid(c); 641 642 /* cyrix could have cpuid enabled via c_identify()*/ 643 if (!have_cpuid_p()) 644 return; 645 646 cpu_detect(c); 647 648 get_cpu_vendor(c); 649 650 get_cpu_cap(c); 651 652 if (this_cpu->c_early_init) 653 this_cpu->c_early_init(c); 654 655 #ifdef CONFIG_SMP 656 c->cpu_index = boot_cpu_id; 657 #endif 658 filter_cpuid_features(c, false); 659 } 660 661 void __init early_cpu_init(void) 662 { 663 const struct cpu_dev *const *cdev; 664 int count = 0; 665 666 printk(KERN_INFO "KERNEL supported cpus:\n"); 667 for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) { 668 const struct cpu_dev *cpudev = *cdev; 669 unsigned int j; 670 671 if (count >= X86_VENDOR_NUM) 672 break; 673 cpu_devs[count] = cpudev; 674 count++; 675 676 for (j = 0; j < 2; j++) { 677 if (!cpudev->c_ident[j]) 678 continue; 679 printk(KERN_INFO " %s %s\n", cpudev->c_vendor, 680 cpudev->c_ident[j]); 681 } 682 } 683 684 early_identify_cpu(&boot_cpu_data); 685 } 686 687 /* 688 * The NOPL instruction is supposed to exist on all CPUs with 689 * family >= 6; unfortunately, that's not true in practice because 690 * of early VIA chips and (more importantly) broken virtualizers that 691 * are not easy to detect. In the latter case it doesn't even *fail* 692 * reliably, so probing for it doesn't even work. Disable it completely 693 * unless we can find a reliable way to detect all the broken cases. 694 */ 695 static void __cpuinit detect_nopl(struct cpuinfo_x86 *c) 696 { 697 clear_cpu_cap(c, X86_FEATURE_NOPL); 698 } 699 700 static void __cpuinit generic_identify(struct cpuinfo_x86 *c) 701 { 702 c->extended_cpuid_level = 0; 703 704 if (!have_cpuid_p()) 705 identify_cpu_without_cpuid(c); 706 707 /* cyrix could have cpuid enabled via c_identify()*/ 708 if (!have_cpuid_p()) 709 return; 710 711 cpu_detect(c); 712 713 get_cpu_vendor(c); 714 715 get_cpu_cap(c); 716 717 if (c->cpuid_level >= 0x00000001) { 718 c->initial_apicid = (cpuid_ebx(1) >> 24) & 0xFF; 719 #ifdef CONFIG_X86_32 720 # ifdef CONFIG_X86_HT 721 c->apicid = apic->phys_pkg_id(c->initial_apicid, 0); 722 # else 723 c->apicid = c->initial_apicid; 724 # endif 725 #endif 726 727 #ifdef CONFIG_X86_HT 728 c->phys_proc_id = c->initial_apicid; 729 #endif 730 } 731 732 get_model_name(c); /* Default name */ 733 734 init_scattered_cpuid_features(c); 735 detect_nopl(c); 736 } 737 738 /* 739 * This does the hard work of actually picking apart the CPU stuff... 740 */ 741 static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) 742 { 743 int i; 744 745 c->loops_per_jiffy = loops_per_jiffy; 746 c->x86_cache_size = -1; 747 c->x86_vendor = X86_VENDOR_UNKNOWN; 748 c->x86_model = c->x86_mask = 0; /* So far unknown... */ 749 c->x86_vendor_id[0] = '\0'; /* Unset */ 750 c->x86_model_id[0] = '\0'; /* Unset */ 751 c->x86_max_cores = 1; 752 c->x86_coreid_bits = 0; 753 #ifdef CONFIG_X86_64 754 c->x86_clflush_size = 64; 755 c->x86_phys_bits = 36; 756 c->x86_virt_bits = 48; 757 #else 758 c->cpuid_level = -1; /* CPUID not detected */ 759 c->x86_clflush_size = 32; 760 c->x86_phys_bits = 32; 761 c->x86_virt_bits = 32; 762 #endif 763 c->x86_cache_alignment = c->x86_clflush_size; 764 memset(&c->x86_capability, 0, sizeof c->x86_capability); 765 766 generic_identify(c); 767 768 if (this_cpu->c_identify) 769 this_cpu->c_identify(c); 770 771 #ifdef CONFIG_X86_64 772 c->apicid = apic->phys_pkg_id(c->initial_apicid, 0); 773 #endif 774 775 /* 776 * Vendor-specific initialization. In this section we 777 * canonicalize the feature flags, meaning if there are 778 * features a certain CPU supports which CPUID doesn't 779 * tell us, CPUID claiming incorrect flags, or other bugs, 780 * we handle them here. 781 * 782 * At the end of this section, c->x86_capability better 783 * indicate the features this CPU genuinely supports! 784 */ 785 if (this_cpu->c_init) 786 this_cpu->c_init(c); 787 788 /* Disable the PN if appropriate */ 789 squash_the_stupid_serial_number(c); 790 791 /* 792 * The vendor-specific functions might have changed features. 793 * Now we do "generic changes." 794 */ 795 796 /* Filter out anything that depends on CPUID levels we don't have */ 797 filter_cpuid_features(c, true); 798 799 /* If the model name is still unset, do table lookup. */ 800 if (!c->x86_model_id[0]) { 801 const char *p; 802 p = table_lookup_model(c); 803 if (p) 804 strcpy(c->x86_model_id, p); 805 else 806 /* Last resort... */ 807 sprintf(c->x86_model_id, "%02x/%02x", 808 c->x86, c->x86_model); 809 } 810 811 #ifdef CONFIG_X86_64 812 detect_ht(c); 813 #endif 814 815 init_hypervisor(c); 816 /* 817 * On SMP, boot_cpu_data holds the common feature set between 818 * all CPUs; so make sure that we indicate which features are 819 * common between the CPUs. The first time this routine gets 820 * executed, c == &boot_cpu_data. 821 */ 822 if (c != &boot_cpu_data) { 823 /* AND the already accumulated flags with these */ 824 for (i = 0; i < NCAPINTS; i++) 825 boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; 826 } 827 828 /* Clear all flags overriden by options */ 829 for (i = 0; i < NCAPINTS; i++) 830 c->x86_capability[i] &= ~cleared_cpu_caps[i]; 831 832 #ifdef CONFIG_X86_MCE 833 /* Init Machine Check Exception if available. */ 834 mcheck_init(c); 835 #endif 836 837 select_idle_routine(c); 838 839 #if defined(CONFIG_NUMA) && defined(CONFIG_X86_64) 840 numa_add_cpu(smp_processor_id()); 841 #endif 842 } 843 844 #ifdef CONFIG_X86_64 845 static void vgetcpu_set_mode(void) 846 { 847 if (cpu_has(&boot_cpu_data, X86_FEATURE_RDTSCP)) 848 vgetcpu_mode = VGETCPU_RDTSCP; 849 else 850 vgetcpu_mode = VGETCPU_LSL; 851 } 852 #endif 853 854 void __init identify_boot_cpu(void) 855 { 856 identify_cpu(&boot_cpu_data); 857 init_c1e_mask(); 858 #ifdef CONFIG_X86_32 859 sysenter_setup(); 860 enable_sep_cpu(); 861 #else 862 vgetcpu_set_mode(); 863 #endif 864 } 865 866 void __cpuinit identify_secondary_cpu(struct cpuinfo_x86 *c) 867 { 868 BUG_ON(c == &boot_cpu_data); 869 identify_cpu(c); 870 #ifdef CONFIG_X86_32 871 enable_sep_cpu(); 872 #endif 873 mtrr_ap_init(); 874 } 875 876 struct msr_range { 877 unsigned min; 878 unsigned max; 879 }; 880 881 static const struct msr_range msr_range_array[] __cpuinitconst = { 882 { 0x00000000, 0x00000418}, 883 { 0xc0000000, 0xc000040b}, 884 { 0xc0010000, 0xc0010142}, 885 { 0xc0011000, 0xc001103b}, 886 }; 887 888 static void __cpuinit print_cpu_msr(void) 889 { 890 unsigned index_min, index_max; 891 unsigned index; 892 u64 val; 893 int i; 894 895 for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) { 896 index_min = msr_range_array[i].min; 897 index_max = msr_range_array[i].max; 898 899 for (index = index_min; index < index_max; index++) { 900 if (rdmsrl_amd_safe(index, &val)) 901 continue; 902 printk(KERN_INFO " MSR%08x: %016llx\n", index, val); 903 } 904 } 905 } 906 907 static int show_msr __cpuinitdata; 908 909 static __init int setup_show_msr(char *arg) 910 { 911 int num; 912 913 get_option(&arg, &num); 914 915 if (num > 0) 916 show_msr = num; 917 return 1; 918 } 919 __setup("show_msr=", setup_show_msr); 920 921 static __init int setup_noclflush(char *arg) 922 { 923 setup_clear_cpu_cap(X86_FEATURE_CLFLSH); 924 return 1; 925 } 926 __setup("noclflush", setup_noclflush); 927 928 void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) 929 { 930 const char *vendor = NULL; 931 932 if (c->x86_vendor < X86_VENDOR_NUM) { 933 vendor = this_cpu->c_vendor; 934 } else { 935 if (c->cpuid_level >= 0) 936 vendor = c->x86_vendor_id; 937 } 938 939 if (vendor && !strstr(c->x86_model_id, vendor)) 940 printk(KERN_CONT "%s ", vendor); 941 942 if (c->x86_model_id[0]) 943 printk(KERN_CONT "%s", c->x86_model_id); 944 else 945 printk(KERN_CONT "%d86", c->x86); 946 947 if (c->x86_mask || c->cpuid_level >= 0) 948 printk(KERN_CONT " stepping %02x\n", c->x86_mask); 949 else 950 printk(KERN_CONT "\n"); 951 952 #ifdef CONFIG_SMP 953 if (c->cpu_index < show_msr) 954 print_cpu_msr(); 955 #else 956 if (show_msr) 957 print_cpu_msr(); 958 #endif 959 } 960 961 static __init int setup_disablecpuid(char *arg) 962 { 963 int bit; 964 965 if (get_option(&arg, &bit) && bit < NCAPINTS*32) 966 setup_clear_cpu_cap(bit); 967 else 968 return 0; 969 970 return 1; 971 } 972 __setup("clearcpuid=", setup_disablecpuid); 973 974 #ifdef CONFIG_X86_64 975 struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table }; 976 977 DEFINE_PER_CPU_FIRST(union irq_stack_union, 978 irq_stack_union) __aligned(PAGE_SIZE); 979 980 DEFINE_PER_CPU(char *, irq_stack_ptr) = 981 init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64; 982 983 DEFINE_PER_CPU(unsigned long, kernel_stack) = 984 (unsigned long)&init_thread_union - KERNEL_STACK_OFFSET + THREAD_SIZE; 985 EXPORT_PER_CPU_SYMBOL(kernel_stack); 986 987 DEFINE_PER_CPU(unsigned int, irq_count) = -1; 988 989 /* 990 * Special IST stacks which the CPU switches to when it calls 991 * an IST-marked descriptor entry. Up to 7 stacks (hardware 992 * limit), all of them are 4K, except the debug stack which 993 * is 8K. 994 */ 995 static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = { 996 [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ, 997 [DEBUG_STACK - 1] = DEBUG_STKSZ 998 }; 999 1000 static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks 1001 [(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]) 1002 __aligned(PAGE_SIZE); 1003 1004 /* May not be marked __init: used by software suspend */ 1005 void syscall_init(void) 1006 { 1007 /* 1008 * LSTAR and STAR live in a bit strange symbiosis. 1009 * They both write to the same internal register. STAR allows to 1010 * set CS/DS but only a 32bit target. LSTAR sets the 64bit rip. 1011 */ 1012 wrmsrl(MSR_STAR, ((u64)__USER32_CS)<<48 | ((u64)__KERNEL_CS)<<32); 1013 wrmsrl(MSR_LSTAR, system_call); 1014 wrmsrl(MSR_CSTAR, ignore_sysret); 1015 1016 #ifdef CONFIG_IA32_EMULATION 1017 syscall32_cpu_init(); 1018 #endif 1019 1020 /* Flags to clear on syscall */ 1021 wrmsrl(MSR_SYSCALL_MASK, 1022 X86_EFLAGS_TF|X86_EFLAGS_DF|X86_EFLAGS_IF|X86_EFLAGS_IOPL); 1023 } 1024 1025 unsigned long kernel_eflags; 1026 1027 /* 1028 * Copies of the original ist values from the tss are only accessed during 1029 * debugging, no special alignment required. 1030 */ 1031 DEFINE_PER_CPU(struct orig_ist, orig_ist); 1032 1033 #else /* CONFIG_X86_64 */ 1034 1035 #ifdef CONFIG_CC_STACKPROTECTOR 1036 DEFINE_PER_CPU(unsigned long, stack_canary); 1037 #endif 1038 1039 /* Make sure %fs and %gs are initialized properly in idle threads */ 1040 struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs) 1041 { 1042 memset(regs, 0, sizeof(struct pt_regs)); 1043 regs->fs = __KERNEL_PERCPU; 1044 regs->gs = __KERNEL_STACK_CANARY; 1045 1046 return regs; 1047 } 1048 #endif /* CONFIG_X86_64 */ 1049 1050 /* 1051 * Clear all 6 debug registers: 1052 */ 1053 static void clear_all_debug_regs(void) 1054 { 1055 int i; 1056 1057 for (i = 0; i < 8; i++) { 1058 /* Ignore db4, db5 */ 1059 if ((i == 4) || (i == 5)) 1060 continue; 1061 1062 set_debugreg(0, i); 1063 } 1064 } 1065 1066 /* 1067 * cpu_init() initializes state that is per-CPU. Some data is already 1068 * initialized (naturally) in the bootstrap process, such as the GDT 1069 * and IDT. We reload them nevertheless, this function acts as a 1070 * 'CPU state barrier', nothing should get across. 1071 * A lot of state is already set up in PDA init for 64 bit 1072 */ 1073 #ifdef CONFIG_X86_64 1074 1075 void __cpuinit cpu_init(void) 1076 { 1077 struct orig_ist *orig_ist; 1078 struct task_struct *me; 1079 struct tss_struct *t; 1080 unsigned long v; 1081 int cpu; 1082 int i; 1083 1084 cpu = stack_smp_processor_id(); 1085 t = &per_cpu(init_tss, cpu); 1086 orig_ist = &per_cpu(orig_ist, cpu); 1087 1088 #ifdef CONFIG_NUMA 1089 if (cpu != 0 && percpu_read(node_number) == 0 && 1090 cpu_to_node(cpu) != NUMA_NO_NODE) 1091 percpu_write(node_number, cpu_to_node(cpu)); 1092 #endif 1093 1094 me = current; 1095 1096 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) 1097 panic("CPU#%d already initialized!\n", cpu); 1098 1099 printk(KERN_INFO "Initializing CPU#%d\n", cpu); 1100 1101 clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); 1102 1103 /* 1104 * Initialize the per-CPU GDT with the boot GDT, 1105 * and set up the GDT descriptor: 1106 */ 1107 1108 switch_to_new_gdt(cpu); 1109 loadsegment(fs, 0); 1110 1111 load_idt((const struct desc_ptr *)&idt_descr); 1112 1113 memset(me->thread.tls_array, 0, GDT_ENTRY_TLS_ENTRIES * 8); 1114 syscall_init(); 1115 1116 wrmsrl(MSR_FS_BASE, 0); 1117 wrmsrl(MSR_KERNEL_GS_BASE, 0); 1118 barrier(); 1119 1120 check_efer(); 1121 if (cpu != 0) 1122 enable_x2apic(); 1123 1124 /* 1125 * set up and load the per-CPU TSS 1126 */ 1127 if (!orig_ist->ist[0]) { 1128 char *estacks = per_cpu(exception_stacks, cpu); 1129 1130 for (v = 0; v < N_EXCEPTION_STACKS; v++) { 1131 estacks += exception_stack_sizes[v]; 1132 orig_ist->ist[v] = t->x86_tss.ist[v] = 1133 (unsigned long)estacks; 1134 } 1135 } 1136 1137 t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap); 1138 1139 /* 1140 * <= is required because the CPU will access up to 1141 * 8 bits beyond the end of the IO permission bitmap. 1142 */ 1143 for (i = 0; i <= IO_BITMAP_LONGS; i++) 1144 t->io_bitmap[i] = ~0UL; 1145 1146 atomic_inc(&init_mm.mm_count); 1147 me->active_mm = &init_mm; 1148 BUG_ON(me->mm); 1149 enter_lazy_tlb(&init_mm, me); 1150 1151 load_sp0(t, ¤t->thread); 1152 set_tss_desc(cpu, t); 1153 load_TR_desc(); 1154 load_LDT(&init_mm.context); 1155 1156 #ifdef CONFIG_KGDB 1157 /* 1158 * If the kgdb is connected no debug regs should be altered. This 1159 * is only applicable when KGDB and a KGDB I/O module are built 1160 * into the kernel and you are using early debugging with 1161 * kgdbwait. KGDB will control the kernel HW breakpoint registers. 1162 */ 1163 if (kgdb_connected && arch_kgdb_ops.correct_hw_break) 1164 arch_kgdb_ops.correct_hw_break(); 1165 else 1166 #endif 1167 clear_all_debug_regs(); 1168 1169 fpu_init(); 1170 1171 raw_local_save_flags(kernel_eflags); 1172 1173 if (is_uv_system()) 1174 uv_cpu_init(); 1175 } 1176 1177 #else 1178 1179 void __cpuinit cpu_init(void) 1180 { 1181 int cpu = smp_processor_id(); 1182 struct task_struct *curr = current; 1183 struct tss_struct *t = &per_cpu(init_tss, cpu); 1184 struct thread_struct *thread = &curr->thread; 1185 1186 if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) { 1187 printk(KERN_WARNING "CPU#%d already initialized!\n", cpu); 1188 for (;;) 1189 local_irq_enable(); 1190 } 1191 1192 printk(KERN_INFO "Initializing CPU#%d\n", cpu); 1193 1194 if (cpu_has_vme || cpu_has_tsc || cpu_has_de) 1195 clear_in_cr4(X86_CR4_VME|X86_CR4_PVI|X86_CR4_TSD|X86_CR4_DE); 1196 1197 load_idt(&idt_descr); 1198 switch_to_new_gdt(cpu); 1199 1200 /* 1201 * Set up and load the per-CPU TSS and LDT 1202 */ 1203 atomic_inc(&init_mm.mm_count); 1204 curr->active_mm = &init_mm; 1205 BUG_ON(curr->mm); 1206 enter_lazy_tlb(&init_mm, curr); 1207 1208 load_sp0(t, thread); 1209 set_tss_desc(cpu, t); 1210 load_TR_desc(); 1211 load_LDT(&init_mm.context); 1212 1213 t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap); 1214 1215 #ifdef CONFIG_DOUBLEFAULT 1216 /* Set up doublefault TSS pointer in the GDT */ 1217 __set_tss_desc(cpu, GDT_ENTRY_DOUBLEFAULT_TSS, &doublefault_tss); 1218 #endif 1219 1220 clear_all_debug_regs(); 1221 1222 /* 1223 * Force FPU initialization: 1224 */ 1225 if (cpu_has_xsave) 1226 current_thread_info()->status = TS_XSAVE; 1227 else 1228 current_thread_info()->status = 0; 1229 clear_used_math(); 1230 mxcsr_feature_mask_init(); 1231 1232 /* 1233 * Boot processor to setup the FP and extended state context info. 1234 */ 1235 if (smp_processor_id() == boot_cpu_id) 1236 init_thread_xstate(); 1237 1238 xsave_init(); 1239 } 1240 #endif 1241