aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86_64/smp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86_64/smp.h')
-rw-r--r--include/asm-x86_64/smp.h29
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
32struct pt_regs; 32struct pt_regs;
33 33
34extern cpumask_t cpu_present_mask;
35extern cpumask_t cpu_possible_map;
36extern cpumask_t cpu_online_map;
37extern cpumask_t cpu_callout_map;
38
34/* 39/*
35 * Private routines/data 40 * Private routines/data
36 */ 41 */
37 42
38extern void smp_alloc_memory(void); 43extern void smp_alloc_memory(void);
39extern cpumask_t cpu_online_map;
40extern volatile unsigned long smp_invalidate_needed; 44extern volatile unsigned long smp_invalidate_needed;
41extern int pic_mode; 45extern int pic_mode;
42extern int smp_num_siblings; 46extern int smp_num_siblings;
@@ -44,7 +48,6 @@ extern void smp_flush_tlb(void);
44extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); 48extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs);
45extern void smp_send_reschedule(int cpu); 49extern void smp_send_reschedule(int cpu);
46extern void smp_invalidate_rcv(void); /* Process an NMI */ 50extern void smp_invalidate_rcv(void); /* Process an NMI */
47extern void (*mtrr_hook) (void);
48extern void zap_low_mappings(void); 51extern void zap_low_mappings(void);
49void smp_stop_cpu(void); 52void smp_stop_cpu(void);
50extern cpumask_t cpu_sibling_map[NR_CPUS]; 53extern 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
63extern cpumask_t cpu_callout_map;
64extern cpumask_t cpu_callin_map;
65#define cpu_possible_map cpu_callout_map
66
67static inline int num_booting_cpus(void) 66static 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())) 79extern 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
102static 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
118static inline int cpu_present_to_apicid(int mps_cpu) 101static inline int cpu_present_to_apicid(int mps_cpu)
119{ 102{
120 if (mps_cpu < NR_CPUS) 103 if (mps_cpu < NR_CPUS)