smp{,boot}.c cleanups
PATCH 1/1 smp{,boot}.c cleanups
The patch below contains the following cleanups on several architectures:
- make some needlessly global code static
- remove the following write-only (except for printk's) variables:
- cache_decay_ticks
- smp_threads_ready
- cacheflush_time
On ppc64, this patch depends on Anton Blanchard's
"ppc64: Remove CONFIG_IRQ_ALL_CPUS" patch.
I've only tried the compilation on i386, but I hope all mistakes I made are on unimportant architectures. ;-)
diffstat output:
arch/alpha/kernel/smp.c | 11 ----------- arch/i386/kernel/smpboot.c | 27 ++++++--------------------- arch/i386/mach-voyager/voyager_smp.c | 12 ------------ arch/ia64/kernel/smpboot.c | 15 --------------- arch/m32r/kernel/smpboot.c | 5 ----- arch/mips/kernel/smp.c | 20 +------------------- arch/parisc/kernel/smp.c | 4 ---- arch/ppc/kernel/smp.c | 2 -- arch/ppc64/kernel/smp.c | 2 -- arch/s390/kernel/smp.c | 3 --- arch/sh/kernel/smp.c | 3 --- arch/sparc/kernel/smp.c | 3 --- arch/sparc/kernel/sun4d_smp.c | 1 - arch/sparc/kernel/sun4m_smp.c | 1 - arch/sparc64/kernel/smp.c | 27 +++------------------------ arch/um/kernel/smp.c | 6 ------ arch/x86_64/kernel/smpboot.c | 25 ++----------------------- include/asm-alpha/timex.h | 1 - include/asm-arm/timex.h | 2 -- include/asm-arm26/timex.h | 2 -- include/asm-i386/smp.h | 3 --- include/asm-i386/timex.h | 2 -- include/asm-m32r/timex.h | 2 -- include/asm-mips/timex.h | 1 - include/asm-parisc/timex.h | 2 -- include/asm-ppc/timex.h | 2 -- include/asm-s390/timex.h | 2 -- include/asm-sh/timex.h | 2 -- include/asm-sh64/timex.h | 2 -- include/asm-sparc/timex.h | 1 - include/asm-um/timex.h | 2 -- include/asm-x86_64/timex.h | 2 -- include/linux/sched.h | 1 - include/linux/smp.h | 6 ------ init/main.c | 1 - 35 files changed, 12 insertions(+), 191 deletions(-)
Signed-off-by Adrian Bunk <[email protected]>
include/linux/sched.h renamed from include/linux/sched.h.old +0 -1
@@ -174,7 +174,6 @@extern void trap_init (void );extern void update_process_times (int user);extern void scheduler_tick (void ); -extern unsigned long cache_decay_ticks;/* Attach to any functions which should be ignored in wchan output. */ #define __sched __attribute__((__section__(".sched.text")))
arch/i386/kernel/smpboot.c renamed from arch/i386/kernel/smpboot.c.old +6 -21
@@ -80,9 +80,6 @@ { [0 ... NR_CPUS-1] = 0xff };EXPORT_SYMBOL (x86_cpu_to_apicid); -/* Set when the idlers are all forked */ -int smp_threads_ready; -/* * Trampoline 80x86 program as an array. */
@@ -95,6 +92,8 @@/* State of each CPU. */ DEFINE_PER_CPU(int, cpu_state) = { 0 }; +static void map_cpu_to_logical_apicid (void ); +/* * Currently trivial. Write the real->protected mode * bootstrap into the page concerned. The caller
@@ -325,7 +324,7 @@static atomic_t init_deasserted; -void __init smp_callin (void ) +static void __init smp_callin (void ) {int cpuid, phys_id;unsigned long timeout;
@@ -416,7 +415,7 @@synchronize_tsc_ap (); } -int cpucount; +static int cpucount;/* * Activate a secondary processor.
@@ -510,7 +509,7 @@u8 cpu_2_logical_apicid[NR_CPUS ] = { [0 ...NR_CPUS -1 ] =BAD_APICID }; -void map_cpu_to_logical_apicid (void ) +static void map_cpu_to_logical_apicid (void ) {int cpu =smp_processor_id ();int apicid =logical_smp_processor_id ();
@@ -519,7 +518,7 @@map_cpu_to_node (cpu,apicid_to_node (apicid)); } -void unmap_cpu_to_logical_apicid (int cpu) +static void unmap_cpu_to_logical_apicid (int cpu) { cpu_2_logical_apicid[cpu] =BAD_APICID ;unmap_cpu_to_node (cpu);
@@ -851,9 +850,6 @@return boot_error; } -cycles_t cacheflush_time; -unsigned long cache_decay_ticks; -static void smp_tune_scheduling (void ) {unsigned long cachesize;/* kB */
@@ -874,7 +870,6 @@* this basically disables processor-affinity * scheduling on SMP without a TSC. */ - cacheflush_time =0 ;return ; }else { cachesize = boot_cpu_data.x86_cache_size;
@@ -882,17 +877,7 @@ cachesize =16 ;/* Pentiums, 2x8kB cache */ bandwidth =100 ; } - - cacheflush_time = (cpu_khz>>10 ) * (cachesize<<10 ) / bandwidth; } - - cache_decay_ticks = (long )cacheflush_time/cpu_khz +1 ; - -printk ("per-CPU timeslice cutoff: %ld.%02ld usecs.\n" , - (long )cacheflush_time/(cpu_khz/1000 ), - ((long )cacheflush_time*100 /(cpu_khz/1000 )) %100 ); -printk ("task migration cache decay timeout: %ld msecs.\n" , - cache_decay_ticks); }/*
arch/i386/mach-voyager/voyager_smp.c renamed from arch/i386/mach-voyager/voyager_smp.c.old +0 -12
@@ -38,10 +38,6 @@/* CPU IRQ affinity -- set to all ones initially */ static unsigned long cpu_irq_affinity[NR_CPUS] __cacheline_aligned = { [0 ... NR_CPUS-1] = ~0UL }; -/* Set when the idlers are all forked - Set in main.c but not actually -* used by any other parts of the kernel */ -int smp_threads_ready =0 ; -/* per CPU data structure (for /proc/cpuinfo et al), visible externally * indexed physically */ struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
@@ -82,14 +78,6 @@* by scheduler but indexed physically */ cpumask_t phys_cpu_present_map =CPU_MASK_NONE ; -/* estimate of time used to flush the SMP-local cache - used in -* processor affinity calculations */ -cycles_t cacheflush_time =0 ; - -/* cache decay ticks for scheduler---a fairly useless quantity for the -voyager system with its odd affinity and huge L3 cache */ -unsigned long cache_decay_ticks =20 ; -/* The internal functions */ static void send_CPI (__u32 cpuset,__u8 cpi);
arch/sparc64/kernel/smp.c renamed from arch/sparc64/kernel/smp.c.old +3 -24
@@ -1056,9 +1056,6 @@prof_counter (boot_cpu_id) =prof_multiplier (boot_cpu_id) =1 ; } -cycles_t cacheflush_time; -unsigned long cache_decay_ticks; -extern unsigned long cheetah_tune_scheduling (void );static void __init smp_tune_scheduling (void )
@@ -1079,10 +1076,8 @@* of moving a process from one cpu to another). */ printk ("SMP: Calibrating ecache flush... " ); -if (tlb_type == cheetah || tlb_type == cheetah_plus) { - cacheflush_time =cheetah_tune_scheduling (); - goto report; - } +if (tlb_type == cheetah || tlb_type == cheetah_plus) +return ;cpu_find_by_instance (0 , &cpu_node,NULL ); ecache_size = prom_getintdefault(cpu_node,
@@ -1125,24 +1120,8 @@ raw = (tick2 - tick1); -/* Dampen it a little, considering two processes -* sharing the cache and fitting. -*/ - cacheflush_time = (raw - (raw >>2 )); -free_pages (orig_flush_base, order); - }else { - cacheflush_time = ((ecache_size <<2 ) + - (ecache_size <<1 )); - } -report: -/* Convert ticks/sticks to jiffies. */ - cache_decay_ticks = cacheflush_time / timer_tick_offset; -if (cache_decay_ticks <1 ) - cache_decay_ticks =1 ; - -printk ("Using heuristic of %ld cycles, %ld ticks.\n" , - cacheflush_time, cache_decay_ticks); + } }/* /proc/profile writes can call this, don't __init it please. */
arch/sparc/kernel/smp.c renamed from arch/sparc/kernel/smp.c.old +0 -3
@@ -36,15 +36,12 @@volatile int smp_processors_ready =0 ;int smp_num_cpus =1 ; -int smp_threads_ready=0 ;volatile unsigned long cpu_callin_map[NR_CPUS ]__initdata = {0 ,};unsigned char boot_cpu_id =0 ;unsigned char boot_cpu_id4 =0 ;/* boot_cpu_id << 2 */ int smp_activated =0 ;volatile int __cpu_number_map[NR_CPUS ];volatile int __cpu_logical_map[NR_CPUS ]; -cycles_t cacheflush_time =0 ;/* XXX */ -unsigned long cache_decay_ticks =100 ;cpumask_t cpu_online_map =CPU_MASK_NONE ;cpumask_t phys_cpu_present_map =CPU_MASK_NONE ;
arch/ppc/kernel/smp.c renamed from arch/ppc/kernel/smp.c.old +0 -2
@@ -35,7 +35,6 @@#include <asm/tlbflush.h> #include <asm/xmon.h> -int smp_threads_ready;volatile int smp_commenced;int smp_tb_synchronized;struct cpuinfo_PPC cpu_data[NR_CPUS ];
@@ -44,7 +43,6 @@atomic_t ipi_sent; DEFINE_PER_CPU(unsigned int, prof_multiplier); DEFINE_PER_CPU(unsigned int, prof_counter); -unsigned long cache_decay_ticks =HZ /100 ;cpumask_t cpu_online_map;cpumask_t cpu_possible_map;int smp_hw_index[NR_CPUS ];
arch/mips/kernel/smp.c renamed from arch/mips/kernel/smp.c.old +1 -19
@@ -47,9 +47,6 @@EXPORT_SYMBOL (phys_cpu_present_map);EXPORT_SYMBOL (cpu_online_map); -cycles_t cacheflush_time; -unsigned long cache_decay_ticks; -static void smp_tune_scheduling (void ) {struct cache_desc *cd = ¤t_cpu_data.scache;
@@ -72,25 +69,10 @@* L1 cache), on PIIs it's around 50-100 usecs, depending on * the cache size) */ -if (!cpu_khz) { -/* -* This basically disables processor-affinity scheduling on SMP -* without a cycle counter. Currently all SMP capable MIPS -* processors have a cycle counter. -*/ - cacheflush_time =0 ; +if (!cpu_khz)return ; - } cachesize = cd->linesz * cd->sets * cd->ways; - cacheflush_time = (cpu_khz>>10 ) * (cachesize<<10 ) / bandwidth; - cache_decay_ticks = (long )cacheflush_time/cpu_khz *HZ /1000 ; - -printk ("per-CPU timeslice cutoff: %ld.%02ld usecs.\n" , - (long )cacheflush_time/(cpu_khz/1000 ), - ((long )cacheflush_time*100 /(cpu_khz/1000 )) %100 ); -printk ("task migration cache decay timeout: %ld msecs.\n" , - (cache_decay_ticks +1 ) *1000 /HZ ); }extern void __init calibrate_delay (void );
arch/sh/kernel/smp.c renamed from arch/sh/kernel/smp.c.old +0 -3
@@ -34,14 +34,12 @@* but is designed to be usable regardless if there's an MMU * present or not. */ -int smp_threads_ready =0 ;struct sh_cpuinfo cpu_data[NR_CPUS ];extern void per_cpu_trap_init (void );cpumask_t cpu_possible_map;cpumask_t cpu_online_map; -unsigned long cache_decay_ticks =HZ /100 ;static atomic_t cpus_booted =ATOMIC_INIT (0 );/* These are defined by the board-specific code. */
@@ -129,7 +127,6 @@void __init smp_cpus_done (unsigned int max_cpus) { - smp_threads_ready =1 ;smp_mb (); }
arch/ia64/kernel/smpboot.c renamed from arch/ia64/kernel/smpboot.c.old +0 -15
@@ -427,26 +427,12 @@ {int ticks;get_option (&str, &ticks); - cache_decay_ticks = ticks;return 1 ; }__setup ("decay=" , decay);/* -* # of ticks an idle task is considered cache-hot. Highly application-dependent. There -* are apps out there which are known to suffer significantly with values >= 4. -*/ -unsigned long cache_decay_ticks =10 ;/* equal to MIN_TIMESLICE */ - -static void -smp_tune_scheduling (void ) -{ -printk (KERN_INFO "task migration cache decay timeout: %ld msecs.\n" , - (cache_decay_ticks +1 ) *1000 /HZ ); -} - -/* * Initialize the logical CPU number to SAPICID mapping */ void __init
@@ -544,7 +530,6 @@printk (KERN_INFO "Boot processor id 0x%x/0x%x\n" ,0 , boot_cpu_id);current_thread_info ()->cpu =0 ; -smp_tune_scheduling ();/* * If SMP should be disabled, then really disable it!
arch/alpha/kernel/smp.c renamed from arch/alpha/kernel/smp.c.old +0 -11
@@ -78,8 +78,6 @@int smp_num_probed;/* Internal processor count */ int smp_num_cpus =1 ;/* Number that came online. */ -cycles_t cacheflush_time; -unsigned long cache_decay_ticks;extern void calibrate_delay (void );
@@ -217,15 +215,6 @@ } freq = hwrpb->cycle_freq ? : est_cycle_freq; - - cacheflush_time = (freq /1000000 ) * (on_chip_cache <<10 ) / bandwidth; - cache_decay_ticks = cacheflush_time / (freq /1000 ) *HZ /1000 ; - -printk ("per-CPU timeslice cutoff: %ld.%02ld usecs.\n" , - cacheflush_time/(freq/1000000 ), - (cacheflush_time*100 /(freq/1000000 )) %100 ); -printk ("task migration cache decay timeout: %ld msecs.\n" , - (cache_decay_ticks +1 ) *1000 /HZ ); }/* Wait until hwrpb->txrdy is clear for cpu. Return -1 on timeout. */
arch/um/kernel/smp.c renamed from arch/um/kernel/smp.c.old +0 -6
@@ -41,15 +41,9 @@*/ struct cpuinfo_um cpu_data[NR_CPUS ]; -/* Set when the idlers are all forked */ -int smp_threads_ready =0 ; -/* A statistic, can be a little off */ int num_reschedules_sent =0 ; -/* Small, random number, never changed */ -unsigned long cache_decay_ticks =5 ; -/* Not changed after boot */ struct task_struct *idle_threads[NR_CPUS ];
arch/parisc/kernel/smp.c renamed from arch/parisc/kernel/smp.c.old +0 -4
@@ -60,8 +60,6 @@static volatile int cpu_now_booting =0 ;/* track which CPU is booting */ -unsigned long cache_decay_ticks;/* declared by include/linux/sched.h */ -static int parisc_max_cpus =1 ;/* online cpus are ones that we've managed to bring up completely
@@ -583,8 +581,6 @@cpu_set (bootstrap_processor, cpu_online_map);cpu_set (bootstrap_processor, cpu_present_map); - - cache_decay_ticks =HZ /100 ;/* FIXME very rough. */ }
arch/m32r/kernel/smpboot.c renamed from arch/m32r/kernel/smpboot.c.old +0 -5
@@ -81,9 +81,6 @@/* Per CPU bogomips and other parameters */ struct cpuinfo_m32r cpu_data[NR_CPUS] __cacheline_aligned; -/* Set when the idlers are all forked */ -int smp_threads_ready; -static int cpucount;static cpumask_t smp_commenced_mask;
@@ -106,8 +103,6 @@static unsigned int calibration_result; -unsigned long cache_decay_ticks =HZ /100 ; -/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ /* Function Prototypes */ /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
arch/x86_64/kernel/smpboot.c renamed from arch/x86_64/kernel/smpboot.c.old +2 -23
@@ -70,9 +70,6 @@/* Per CPU bogomips and other parameters */ struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned; -/* Set when the idlers are all forked */ -int smp_threads_ready; - cpumask_t cpu_sibling_map[NR_CPUS] __cacheline_aligned;/*
@@ -249,7 +246,7 @@static atomic_t init_deasserted; -void __init smp_callin (void ) +static void __init smp_callin (void ) {int cpuid, phys_id;unsigned long timeout;
@@ -338,7 +335,7 @@synchronize_tsc_ap (); } -int cpucount; +static int cpucount;/* * Activate a secondary processor.
@@ -661,9 +658,6 @@ } } -cycles_t cacheflush_time; -unsigned long cache_decay_ticks; -static void smp_tune_scheduling (void ) {int cachesize;/* kB */
@@ -680,11 +674,6 @@*/ if (!cpu_khz) { -/* -* this basically disables processor-affinity -* scheduling on SMP without a TSC. -*/ - cacheflush_time =0 ;return ; }else { cachesize = boot_cpu_data.x86_cache_size;
@@ -692,17 +681,7 @@ cachesize =16 ;/* Pentiums, 2x8kB cache */ bandwidth =100 ; } - - cacheflush_time = (cpu_khz>>10 ) * (cachesize<<10 ) / bandwidth; } - - cache_decay_ticks = (long )cacheflush_time/cpu_khz *HZ /1000 ; - -printk (KERN_INFO "per-CPU timeslice cutoff: %ld.%02ld usecs.\n" , - (long )cacheflush_time/(cpu_khz/1000 ), - ((long )cacheflush_time*100 /(cpu_khz/1000 )) %100 ); -printk (KERN_INFO "task migration cache decay timeout: %ld msecs.\n" , - (cache_decay_ticks +1 ) *1000 /HZ ); }/*
arch/s390/kernel/smp.c renamed from arch/s390/kernel/smp.c.old +0 -3
@@ -50,12 +50,9 @@*/ struct _lowcore *lowcore_ptr[NR_CPUS ]; -cycles_t cacheflush_time=0 ; -int smp_threads_ready=0 ;/* Set when the idlers are all forked. */ cpumask_t cpu_online_map;cpumask_t cpu_possible_map; -unsigned long cache_decay_ticks =0 ;static struct task_struct *current_set[NR_CPUS ];
include/asm-mips/timex.h renamed from include/asm-mips/timex.h.old +0 -1
@@ -45,7 +45,6 @@*/ typedef unsigned int cycles_t ; -extern cycles_t cacheflush_time;static inline cycles_t get_cycles (void ) {
include/asm-parisc/timex.h renamed from include/asm-parisc/timex.h.old +0 -2
@@ -12,8 +12,6 @@typedef unsigned long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {return mfctl (16 );
include/asm-x86_64/timex.h renamed from include/asm-x86_64/timex.h.old +0 -2
@@ -16,8 +16,6 @@typedef unsigned long long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {unsigned long long ret;
include/asm-arm/timex.h renamed from include/asm-arm/timex.h.old +0 -2
@@ -16,8 +16,6 @@typedef unsigned long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {return 0 ;
include/asm-ppc/timex.h renamed from include/asm-ppc/timex.h.old +0 -2
@@ -19,8 +19,6 @@* Currently only used on SMP. */ -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {cycles_t ret =0 ;
include/asm-um/timex.h renamed from include/asm-um/timex.h.old +0 -2
@@ -3,8 +3,6 @@typedef unsigned long cycles_t ; -#define cacheflush_time (0) -static inline cycles_t get_cycles (void ) {return 0 ;
include/asm-alpha/timex.h renamed from include/asm-alpha/timex.h.old +0 -1
@@ -20,7 +20,6 @@*/ typedef unsigned int cycles_t ; -extern cycles_t cacheflush_time;static inline cycles_t get_cycles (void ) {
include/asm-sh64/timex.h renamed from include/asm-sh64/timex.h.old +0 -2
@@ -23,8 +23,6 @@typedef unsigned long cycles_t ; -extern cycles_t cacheflush_time; -static __inline__cycles_t get_cycles (void ) {return 0 ;
include/asm-sparc/timex.h renamed from include/asm-sparc/timex.h.old +0 -1
@@ -10,7 +10,6 @@/* XXX Maybe do something better at some point... -DaveM */ typedef unsigned long cycles_t ; -extern cycles_t cacheflush_time;#define get_cycles () (0)#endif
include/asm-m32r/timex.h renamed from include/asm-m32r/timex.h.old +0 -2
@@ -25,8 +25,6 @@typedef unsigned long long cycles_t ; -extern cycles_t cacheflush_time; -static __inline__cycles_t get_cycles (void ) {return 0 ;
include/asm-i386/timex.h renamed from include/asm-i386/timex.h.old +0 -2
@@ -32,8 +32,6 @@*/ typedef unsigned long long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {unsigned long long ret=0 ;
include/asm-s390/timex.h renamed from include/asm-s390/timex.h.old +0 -2
@@ -15,8 +15,6 @@typedef unsigned long long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {cycles_t cycles;
include/asm-arm26/timex.h renamed from include/asm-arm26/timex.h.old +0 -2
@@ -21,8 +21,6 @@typedef unsigned long cycles_t ; -extern cycles_t cacheflush_time; -static inline cycles_t get_cycles (void ) {return 0 ;
include/asm-sh/timex.h renamed from include/asm-sh/timex.h.old +0 -2
@@ -10,8 +10,6 @@typedef unsigned long long cycles_t ; -extern cycles_t cacheflush_time; -static __inline__cycles_t get_cycles (void ) {return 0 ;
include/asm-i386/smp.h renamed from include/asm-i386/smp.h.old +0 -3
@@ -62,9 +62,6 @@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
arch/sparc/kernel/sun4d_smp.c renamed from arch/sparc/kernel/sun4d_smp.c.old +0 -1
@@ -45,7 +45,6 @@extern volatile int smp_processors_ready;extern int smp_num_cpus;static int smp_highest_cpu; -extern int smp_threads_ready;extern volatile unsigned long cpu_callin_map[NR_CPUS ];extern struct cpuinfo_sparc cpu_data[NR_CPUS ];extern unsigned char boot_cpu_id;
arch/sparc/kernel/sun4m_smp.c renamed from arch/sparc/kernel/sun4m_smp.c.old +0 -1
@@ -41,7 +41,6 @@extern volatile int smp_processors_ready;extern int smp_num_cpus; -extern int smp_threads_ready;extern volatile unsigned long cpu_callin_map[NR_CPUS ];extern unsigned char boot_cpu_id;extern int smp_activated;
include/linux/smp.h renamed from include/linux/smp.h.old +0 -6
@@ -71,11 +71,6 @@return ret; } -/* -* True once the per process idle is forked -*/ -extern int smp_threads_ready; -#define MSG_ALL_BUT_SELF 0x8000/* Assume <32768 CPU's */ #define MSG_ALL 0x8001
@@ -102,7 +97,6 @@# define smp_processor_id () 0#endif #define hard_smp_processor_id () 0 -#define smp_threads_ready 1#define smp_call_function (func,info,retry,wait) ({ 0; })#define on_each_cpu (func,info,retry,wait) ({ func(info); 0; })static inline void smp_send_reschedule (int cpu) { }
init/main.c renamed from init/main.c.old +0 -1
@@ -353,7 +353,6 @@#if 0 /* Get other processors into their bootup holding patterns. */ - smp_threads_ready=1 ;smp_commence ();#endif }
arch/ppc64/kernel/smp.c renamed from arch/ppc64/kernel/smp.c.old +0 -2
@@ -53,8 +53,6 @@ #define DBG(fmt...)#endif -int smp_threads_ready; -cpumask_t cpu_possible_map =CPU_MASK_NONE ;cpumask_t cpu_online_map =CPU_MASK_NONE ;cpumask_t cpu_sibling_map[NR_CPUS ] = { [0 ...NR_CPUS -1 ] =CPU_MASK_NONE };