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 ---