X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-i386%2Fsmp.h;h=64fe624c02caa5ed80838428a5366aa385924888;hb=refs%2Fheads%2Fvserver;hp=ba7eccc97f191b98f71d533188cff558f3642209;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/include/asm-i386/smp.h b/include/asm-i386/smp.h index ba7eccc97..64fe624c0 100644 --- a/include/asm-i386/smp.h +++ b/include/asm-i386/smp.h @@ -5,10 +5,10 @@ * We need the APIC definitions automatically as part of 'smp.h' */ #ifndef __ASSEMBLY__ -#include #include #include #include +#include #endif #ifdef CONFIG_X86_LOCAL_APIC @@ -35,25 +35,33 @@ extern void smp_alloc_memory(void); extern int pic_mode; extern int smp_num_siblings; extern cpumask_t cpu_sibling_map[]; +extern cpumask_t cpu_core_map[]; -extern void smp_flush_tlb(void); -extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs); -extern void smp_invalidate_rcv(void); /* Process an NMI */ extern void (*mtrr_hook) (void); extern void zap_low_mappings (void); +extern void lock_ipi_call_lock(void); +extern void unlock_ipi_call_lock(void); #define MAX_APICID 256 extern u8 x86_cpu_to_apicid[]; +#define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu] + +#ifdef CONFIG_HOTPLUG_CPU +extern void cpu_exit_clear(void); +extern void cpu_uninit(void); +#endif + /* * This function is needed by all SMP systems. It must _always_ be valid * from the initial startup. We map APIC_BASE very early in page_setup(), * so this is correct in the x86 case. */ -#define smp_processor_id() (current_thread_info()->cpu) +#define raw_smp_processor_id() (read_pda(cpu_number)) extern cpumask_t cpu_callout_map; -#define cpu_possible_map cpu_callout_map +extern cpumask_t cpu_callin_map; +extern cpumask_t cpu_possible_map; /* We don't mark CPUs online until __cpu_up(), so we need another measure */ static inline int num_booting_cpus(void) @@ -61,9 +69,6 @@ static inline int num_booting_cpus(void) return cpus_weight(cpu_callout_map); } -extern void map_cpu_to_logical_apicid(void); -extern void unmap_cpu_to_logical_apicid(int cpu); - #ifdef CONFIG_X86_LOCAL_APIC #ifdef APIC_DEFINITION @@ -76,17 +81,35 @@ static inline int hard_smp_processor_id(void) return GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID)); } #endif +#endif + +extern int safe_smp_processor_id(void); +extern int __cpu_disable(void); +extern void __cpu_die(unsigned int cpu); +extern unsigned int num_processors; + +#endif /* !__ASSEMBLY__ */ + +#else /* CONFIG_SMP */ + +#define safe_smp_processor_id() 0 +#define cpu_physical_id(cpu) boot_cpu_physical_apicid + +#define NO_PROC_ID 0xFF /* No processor magic marker */ + +#endif + +#ifndef __ASSEMBLY__ + +extern u8 apicid_2_node[]; +#ifdef CONFIG_X86_LOCAL_APIC static __inline int logical_smp_processor_id(void) { /* we don't want to mark this access volatile - bad code generation */ return GET_APIC_LOGICAL_ID(*(unsigned long *)(APIC_BASE+APIC_LDR)); } - #endif -#endif /* !__ASSEMBLY__ */ - -#define NO_PROC_ID 0xFF /* No processor magic marker */ - #endif + #endif