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