|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Pausing event delivery
Hi all,
I'm testing something out where I need to disable event delivery to
the guest temporarily. Essentially, I don't want the guest to get an
interrupt and schedule a different task on the VCPU while I'm in the
middle of my work.
I noticed in vmx_intr_assist() :
/* Block event injection when single step with MTF. */
if ( unlikely(v->arch.hvm_vcpu.single_step) )
{
v->arch.hvm_vmx.exec_control |= CPU_BASED_MONITOR_TRAP_FLAG;
vmx_update_cpu_exec_control(v);
return;
}
So I tried adding my own check that would see if a flag is set and
simply return:
if ( unlikely(v->arch.hvm_vcpu.block_interrupts) )
{
dprintk(XENLOG_DEBUG, "Blocking event injection on VCPU %d\n",
v->vcpu_id);
return;
}
However, it seems when the flag is set, the VCPU never resumes. It
seems stuck in a loop:
....
(XEN) intr.c:234: Blocking event injection on VCPU 1
(XEN) intr.c:234: Blocking event injection on VCPU 1
(XEN) intr.c:234: Blocking event injection on VCPU 1
(XEN) intr.c:234: Blocking event injection on VCPU 1
....
It doesn't look like any any other vmexits happen after this. A debug
message in the vmexit hander confirms this. What I'm aiming for is to
allow the guest to execute the next instruction, which will cause a
vmexit, and then I turn the flag off, and everything resumes.
Can anyone give me any insight into what I'm doing wrong or missing?
Thanks.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |