mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Simplify continue_hypercall_on_cpu() now that it runs in vcpu context.
We do not need to take so much care over putting the original vcpu to sleep, as it will not be spinning on progress of the idle vcpu. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
1 parent
10d7e8ed96
commit
f3a1f2d30e
1 file changed
+2
-13
+2
-13
@@ -919,19 +919,8 @@ static void continue_hypercall_tasklet_handler(unsigned long _info)
|
||||
struct migrate_info *info = (struct migrate_info *)_info;
|
||||
struct vcpu *v = info->vcpu;
|
||||
|
||||
/*
|
||||
* Wait for vcpu to be entirely descheduled. We re-schedule ourselves
|
||||
* meanwhile to allow other work to be done (e.g., descheduling the vcpu!).
|
||||
*/
|
||||
BUG_ON(vcpu_runnable(v));
|
||||
if ( v->is_running )
|
||||
{
|
||||
tasklet_schedule(&v->continue_hypercall_tasklet);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Once descheduled, we need to gain access to its register state. */
|
||||
sync_vcpu_execstate(v);
|
||||
/* Wait for vcpu to sleep so that we can access its register state. */
|
||||
vcpu_sleep_sync(v);
|
||||
|
||||
this_cpu(continue_info) = info;
|
||||
return_reg(v) = (info->cpu == smp_processor_id())
|
||||
|
||||