static void __cpuinit xen_play_dead(void) 
{
	play_dead_common();
	HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
	cpu_bringup();
	preempt_enable();
}
Exemple #2
0
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();
}
Exemple #3
0
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();
}
Exemple #4
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);
}
Exemple #5
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();
}
Exemple #6
0
void native_play_dead(void)
{
	play_dead_common();
}