diff options
author | Paul Mundt <lethal@linux-sh.org> | 2011-05-23 23:05:26 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-05-23 23:05:26 -0400 |
commit | 8b1aaeaf54f1bcaa0bbec6bb170db367c998d27c (patch) | |
tree | 2478e1708f5a3da261597f4aa1011d4d41c2cc84 /arch/x86/include/asm/apic.h | |
parent | bca606a646a2b1f4fa1ae2b22a0ac707505d7297 (diff) | |
parent | 5e152b4c9e0fce6149c74406346a7ae7e7a17727 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into rmobile-latest
Diffstat (limited to 'arch/x86/include/asm/apic.h')
-rw-r--r-- | arch/x86/include/asm/apic.h | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index 2b7d573be549..4a0b7c7e2cce 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h | |||
@@ -363,7 +363,12 @@ struct apic { | |||
363 | */ | 363 | */ |
364 | int (*x86_32_early_logical_apicid)(int cpu); | 364 | int (*x86_32_early_logical_apicid)(int cpu); |
365 | 365 | ||
366 | /* determine CPU -> NUMA node mapping */ | 366 | /* |
367 | * Optional method called from setup_local_APIC() after logical | ||
368 | * apicid is guaranteed to be known to initialize apicid -> node | ||
369 | * mapping if NUMA initialization hasn't done so already. Don't | ||
370 | * add new users. | ||
371 | */ | ||
367 | int (*x86_32_numa_cpu_node)(int cpu); | 372 | int (*x86_32_numa_cpu_node)(int cpu); |
368 | #endif | 373 | #endif |
369 | }; | 374 | }; |
@@ -376,6 +381,26 @@ struct apic { | |||
376 | extern struct apic *apic; | 381 | extern struct apic *apic; |
377 | 382 | ||
378 | /* | 383 | /* |
384 | * APIC drivers are probed based on how they are listed in the .apicdrivers | ||
385 | * section. So the order is important and enforced by the ordering | ||
386 | * of different apic driver files in the Makefile. | ||
387 | * | ||
388 | * For the files having two apic drivers, we use apic_drivers() | ||
389 | * to enforce the order with in them. | ||
390 | */ | ||
391 | #define apic_driver(sym) \ | ||
392 | static struct apic *__apicdrivers_##sym __used \ | ||
393 | __aligned(sizeof(struct apic *)) \ | ||
394 | __section(.apicdrivers) = { &sym } | ||
395 | |||
396 | #define apic_drivers(sym1, sym2) \ | ||
397 | static struct apic *__apicdrivers_##sym1##sym2[2] __used \ | ||
398 | __aligned(sizeof(struct apic *)) \ | ||
399 | __section(.apicdrivers) = { &sym1, &sym2 } | ||
400 | |||
401 | extern struct apic *__apicdrivers[], *__apicdrivers_end[]; | ||
402 | |||
403 | /* | ||
379 | * APIC functionality to boot other CPUs - only used on SMP: | 404 | * APIC functionality to boot other CPUs - only used on SMP: |
380 | */ | 405 | */ |
381 | #ifdef CONFIG_SMP | 406 | #ifdef CONFIG_SMP |
@@ -453,15 +478,10 @@ static inline unsigned default_get_apic_id(unsigned long x) | |||
453 | #define DEFAULT_TRAMPOLINE_PHYS_HIGH 0x469 | 478 | #define DEFAULT_TRAMPOLINE_PHYS_HIGH 0x469 |
454 | 479 | ||
455 | #ifdef CONFIG_X86_64 | 480 | #ifdef CONFIG_X86_64 |
456 | extern struct apic apic_flat; | ||
457 | extern struct apic apic_physflat; | ||
458 | extern struct apic apic_x2apic_cluster; | ||
459 | extern struct apic apic_x2apic_phys; | ||
460 | extern int default_acpi_madt_oem_check(char *, char *); | 481 | extern int default_acpi_madt_oem_check(char *, char *); |
461 | 482 | ||
462 | extern void apic_send_IPI_self(int vector); | 483 | extern void apic_send_IPI_self(int vector); |
463 | 484 | ||
464 | extern struct apic apic_x2apic_uv_x; | ||
465 | DECLARE_PER_CPU(int, x2apic_extra_bits); | 485 | DECLARE_PER_CPU(int, x2apic_extra_bits); |
466 | 486 | ||
467 | extern int default_cpu_present_to_apicid(int mps_cpu); | 487 | extern int default_cpu_present_to_apicid(int mps_cpu); |
@@ -475,7 +495,7 @@ static inline void default_wait_for_init_deassert(atomic_t *deassert) | |||
475 | return; | 495 | return; |
476 | } | 496 | } |
477 | 497 | ||
478 | extern void generic_bigsmp_probe(void); | 498 | extern struct apic *generic_bigsmp_probe(void); |
479 | 499 | ||
480 | 500 | ||
481 | #ifdef CONFIG_X86_LOCAL_APIC | 501 | #ifdef CONFIG_X86_LOCAL_APIC |
@@ -511,8 +531,6 @@ extern struct apic apic_noop; | |||
511 | 531 | ||
512 | #ifdef CONFIG_X86_32 | 532 | #ifdef CONFIG_X86_32 |
513 | 533 | ||
514 | extern struct apic apic_default; | ||
515 | |||
516 | static inline int noop_x86_32_early_logical_apicid(int cpu) | 534 | static inline int noop_x86_32_early_logical_apicid(int cpu) |
517 | { | 535 | { |
518 | return BAD_APICID; | 536 | return BAD_APICID; |
@@ -537,8 +555,6 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb) | |||
537 | return cpuid_apic >> index_msb; | 555 | return cpuid_apic >> index_msb; |
538 | } | 556 | } |
539 | 557 | ||
540 | extern int default_x86_32_numa_cpu_node(int cpu); | ||
541 | |||
542 | #endif | 558 | #endif |
543 | 559 | ||
544 | static inline unsigned int | 560 | static inline unsigned int |