diff options
Diffstat (limited to 'include/asm-x86_64/smp.h')
-rw-r--r-- | include/asm-x86_64/smp.h | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/include/asm-x86_64/smp.h b/include/asm-x86_64/smp.h index f5eaa1ab48ff..96844fecbde8 100644 --- a/include/asm-x86_64/smp.h +++ b/include/asm-x86_64/smp.h | |||
@@ -31,12 +31,16 @@ extern int disable_apic; | |||
31 | 31 | ||
32 | struct pt_regs; | 32 | struct pt_regs; |
33 | 33 | ||
34 | extern cpumask_t cpu_present_mask; | ||
35 | extern cpumask_t cpu_possible_map; | ||
36 | extern cpumask_t cpu_online_map; | ||
37 | extern cpumask_t cpu_callout_map; | ||
38 | |||
34 | /* | 39 | /* |
35 | * Private routines/data | 40 | * Private routines/data |
36 | */ | 41 | */ |
37 | 42 | ||
38 | extern void smp_alloc_memory(void); | 43 | extern void smp_alloc_memory(void); |
39 | extern cpumask_t cpu_online_map; | ||
40 | extern volatile unsigned long smp_invalidate_needed; | 44 | extern volatile unsigned long smp_invalidate_needed; |
41 | extern int pic_mode; | 45 | extern int pic_mode; |
42 | extern int smp_num_siblings; | 46 | extern int smp_num_siblings; |
@@ -44,7 +48,6 @@ extern void smp_flush_tlb(void); | |||
44 | extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); | 48 | extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); |
45 | extern void smp_send_reschedule(int cpu); | 49 | extern void smp_send_reschedule(int cpu); |
46 | extern void smp_invalidate_rcv(void); /* Process an NMI */ | 50 | extern void smp_invalidate_rcv(void); /* Process an NMI */ |
47 | extern void (*mtrr_hook) (void); | ||
48 | extern void zap_low_mappings(void); | 51 | extern void zap_low_mappings(void); |
49 | void smp_stop_cpu(void); | 52 | void smp_stop_cpu(void); |
50 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | 53 | extern cpumask_t cpu_sibling_map[NR_CPUS]; |
@@ -60,10 +63,6 @@ extern u8 cpu_core_id[NR_CPUS]; | |||
60 | * compresses data structures. | 63 | * compresses data structures. |
61 | */ | 64 | */ |
62 | 65 | ||
63 | extern cpumask_t cpu_callout_map; | ||
64 | extern cpumask_t cpu_callin_map; | ||
65 | #define cpu_possible_map cpu_callout_map | ||
66 | |||
67 | static inline int num_booting_cpus(void) | 66 | static inline int num_booting_cpus(void) |
68 | { | 67 | { |
69 | return cpus_weight(cpu_callout_map); | 68 | return cpus_weight(cpu_callout_map); |
@@ -77,7 +76,7 @@ extern __inline int hard_smp_processor_id(void) | |||
77 | return GET_APIC_ID(*(unsigned int *)(APIC_BASE+APIC_ID)); | 76 | return GET_APIC_ID(*(unsigned int *)(APIC_BASE+APIC_ID)); |
78 | } | 77 | } |
79 | 78 | ||
80 | #define safe_smp_processor_id() (disable_apic ? 0 : x86_apicid_to_cpu(hard_smp_processor_id())) | 79 | extern int safe_smp_processor_id(void); |
81 | 80 | ||
82 | #endif /* !ASSEMBLY */ | 81 | #endif /* !ASSEMBLY */ |
83 | 82 | ||
@@ -99,22 +98,6 @@ static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask) | |||
99 | return cpus_addr(cpumask)[0]; | 98 | return cpus_addr(cpumask)[0]; |
100 | } | 99 | } |
101 | 100 | ||
102 | static inline int x86_apicid_to_cpu(u8 apicid) | ||
103 | { | ||
104 | int i; | ||
105 | |||
106 | for (i = 0; i < NR_CPUS; ++i) | ||
107 | if (x86_cpu_to_apicid[i] == apicid) | ||
108 | return i; | ||
109 | |||
110 | /* No entries in x86_cpu_to_apicid? Either no MPS|ACPI, | ||
111 | * or called too early. Either way, we must be CPU 0. */ | ||
112 | if (x86_cpu_to_apicid[0] == BAD_APICID) | ||
113 | return 0; | ||
114 | |||
115 | return -1; | ||
116 | } | ||
117 | |||
118 | static inline int cpu_present_to_apicid(int mps_cpu) | 101 | static inline int cpu_present_to_apicid(int mps_cpu) |
119 | { | 102 | { |
120 | if (mps_cpu < NR_CPUS) | 103 | if (mps_cpu < NR_CPUS) |