示例#1
0
static void __cpuinit xen_play_dead(void) 
{
	play_dead_common();
	HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
	cpu_bringup();
	preempt_enable();
}
示例#2
0
static inline void play_dead(void)
{
	idle_task_exit();
	local_irq_disable();
	cpu_clear(smp_processor_id(), cpu_initialized);
	preempt_enable_no_resched();
	HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
	cpu_bringup();
}
示例#3
0
文件: smp.c 项目: artynet/linux-3.3.8
static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */
{
    play_dead_common();
    HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
    cpu_bringup();
    /*
     * Balance out the preempt calls - as we are running in cpu_idle
     * loop which has been called at bootup from cpu_bringup_and_idle.
     * The cpucpu_bringup_and_idle called cpu_bringup which made a
     * preempt_disable() So this preempt_enable will balance it out.
     */
    preempt_enable();
}
示例#4
0
文件: smp.c 项目: garyvan/openwrt-1.6
static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */
{
	play_dead_common();
	HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
	cpu_bringup();
	/*
	 * commit 4b0c0f294 (tick: Cleanup NOHZ per cpu data on cpu down)
	 * clears certain data that the cpu_idle loop (which called us
	 * and that we return from) expects. The only way to get that
	 * data back is to call:
	 */
	tick_nohz_idle_enter();
}
示例#5
0
static void xen_pv_play_dead(void) /* used only with HOTPLUG_CPU */
{
	play_dead_common();
	HYPERVISOR_vcpu_op(VCPUOP_down, xen_vcpu_nr(smp_processor_id()), NULL);
	cpu_bringup();
	/*
	 * commit 4b0c0f294 (tick: Cleanup NOHZ per cpu data on cpu down)
	 * clears certain data that the cpu_idle loop (which called us
	 * and that we return from) expects. The only way to get that
	 * data back is to call:
	 */
	tick_nohz_idle_enter();
	tick_nohz_idle_stop_tick_protected();

	cpuhp_online_idle(CPUHP_AP_ONLINE_IDLE);
}
示例#6
0
static __cpuinit void cpu_bringup_and_idle(void)
{
	cpu_bringup();
	cpu_idle();
}
示例#7
0
static void __cpuinit xen_play_dead(void) /* used only with CPU_HOTPLUG */
{
	play_dead_common();
	HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
	cpu_bringup();
}
示例#8
0
static void __cpuinit cpu_bringup_and_idle(void)
{
    cpu_bringup();
    cpu_idle();
}
示例#9
0
asmlinkage __visible void cpu_bringup_and_idle(void)
{
	cpu_bringup();
	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
}
示例#10
0
文件: smp.c 项目: garyvan/openwrt-1.6
static void __cpuinit cpu_bringup_and_idle(void)
{
	cpu_bringup();
	cpu_startup_entry(CPUHP_ONLINE);
}