process.c (bb8416bf8b93d88e23cbbfde962ef85acda5bd5f) | process.c (1eeb66a1bb973534dc3d064920a5ca683823372e) |
---|---|
1/* 2 * Architecture-specific setup. 3 * 4 * Copyright (C) 1998-2003 Hewlett-Packard Co 5 * David Mosberger-Tang <davidm@hpl.hp.com> 6 * 04/11/17 Ashok Raj <ashok.raj@intel.com> Added CPU Hotplug Support 7 * 8 * 2005-10-07 Keith Owens <kaos@sgi.com> --- 13 unchanged lines hidden (view full) --- 22#include <linux/slab.h> 23#include <linux/smp_lock.h> 24#include <linux/stddef.h> 25#include <linux/thread_info.h> 26#include <linux/unistd.h> 27#include <linux/efi.h> 28#include <linux/interrupt.h> 29#include <linux/delay.h> | 1/* 2 * Architecture-specific setup. 3 * 4 * Copyright (C) 1998-2003 Hewlett-Packard Co 5 * David Mosberger-Tang <davidm@hpl.hp.com> 6 * 04/11/17 Ashok Raj <ashok.raj@intel.com> Added CPU Hotplug Support 7 * 8 * 2005-10-07 Keith Owens <kaos@sgi.com> --- 13 unchanged lines hidden (view full) --- 22#include <linux/slab.h> 23#include <linux/smp_lock.h> 24#include <linux/stddef.h> 25#include <linux/thread_info.h> 26#include <linux/unistd.h> 27#include <linux/efi.h> 28#include <linux/interrupt.h> 29#include <linux/delay.h> |
30#include <linux/kdebug.h> |
|
30 31#include <asm/cpu.h> 32#include <asm/delay.h> 33#include <asm/elf.h> 34#include <asm/ia32.h> 35#include <asm/irq.h> | 31 32#include <asm/cpu.h> 33#include <asm/delay.h> 34#include <asm/elf.h> 35#include <asm/ia32.h> 36#include <asm/irq.h> |
36#include <asm/kdebug.h> | |
37#include <asm/kexec.h> 38#include <asm/pgalloc.h> 39#include <asm/processor.h> 40#include <asm/sal.h> 41#include <asm/tlbflush.h> 42#include <asm/uaccess.h> 43#include <asm/unwind.h> 44#include <asm/user.h> --- 187 unchanged lines hidden (view full) --- 232 BUG(); 233} 234#endif /* CONFIG_HOTPLUG_CPU */ 235 236void cpu_idle_wait(void) 237{ 238 unsigned int cpu, this_cpu = get_cpu(); 239 cpumask_t map; | 37#include <asm/kexec.h> 38#include <asm/pgalloc.h> 39#include <asm/processor.h> 40#include <asm/sal.h> 41#include <asm/tlbflush.h> 42#include <asm/uaccess.h> 43#include <asm/unwind.h> 44#include <asm/user.h> --- 187 unchanged lines hidden (view full) --- 232 BUG(); 233} 234#endif /* CONFIG_HOTPLUG_CPU */ 235 236void cpu_idle_wait(void) 237{ 238 unsigned int cpu, this_cpu = get_cpu(); 239 cpumask_t map; |
240 cpumask_t tmp = current->cpus_allowed; | |
241 242 set_cpus_allowed(current, cpumask_of_cpu(this_cpu)); 243 put_cpu(); 244 245 cpus_clear(map); 246 for_each_online_cpu(cpu) { 247 per_cpu(cpu_idle_state, cpu) = 1; 248 cpu_set(cpu, map); --- 5 unchanged lines hidden (view full) --- 254 do { 255 ssleep(1); 256 for_each_online_cpu(cpu) { 257 if (cpu_isset(cpu, map) && !per_cpu(cpu_idle_state, cpu)) 258 cpu_clear(cpu, map); 259 } 260 cpus_and(map, map, cpu_online_map); 261 } while (!cpus_empty(map)); | 240 241 set_cpus_allowed(current, cpumask_of_cpu(this_cpu)); 242 put_cpu(); 243 244 cpus_clear(map); 245 for_each_online_cpu(cpu) { 246 per_cpu(cpu_idle_state, cpu) = 1; 247 cpu_set(cpu, map); --- 5 unchanged lines hidden (view full) --- 253 do { 254 ssleep(1); 255 for_each_online_cpu(cpu) { 256 if (cpu_isset(cpu, map) && !per_cpu(cpu_idle_state, cpu)) 257 cpu_clear(cpu, map); 258 } 259 cpus_and(map, map, cpu_online_map); 260 } while (!cpus_empty(map)); |
262 set_cpus_allowed(current, tmp); | |
263} 264EXPORT_SYMBOL_GPL(cpu_idle_wait); 265 266void __attribute__((noreturn)) 267cpu_idle (void) 268{ 269 void (*mark_idle)(int) = ia64_mark_idle; 270 int cpu = smp_processor_id(); --- 575 unchanged lines hidden --- | 261} 262EXPORT_SYMBOL_GPL(cpu_idle_wait); 263 264void __attribute__((noreturn)) 265cpu_idle (void) 266{ 267 void (*mark_idle)(int) = ia64_mark_idle; 268 int cpu = smp_processor_id(); --- 575 unchanged lines hidden --- |