]> xenbits.xensource.com Git - xen.git/commit
Nested VMX: prohibit virtual vmentry/vmexit during IO emulation
authorYang Zhang <yang.z.zhang@Intel.com>
Thu, 23 Jan 2014 09:27:34 +0000 (10:27 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 23 Jan 2014 09:27:34 +0000 (10:27 +0100)
commit09bb434748af9bfe3f7fca4b6eef721a7d5042a4
tree075b3fa0325c2aee8519beec054fafca25b8e6d1
parent407a3c00ffe9b283b2bd7e3ae6aa86a54d51ed92
Nested VMX: prohibit virtual vmentry/vmexit during IO emulation

Sometimes, L0 needs to decode L2's instruction to handle IO access directly.
And L0 may get X86EMUL_RETRY when handling this IO request. At same time, if
there is a virtual vmexit pending (for example, an interrupt pending to inject
to L1) and hypervisor will switch the VCPU context from L2 to L1. Now we
already are in L1's context, but since we got a X86EMUL_RETRY just now and
this means hypervisor will retry to handle the IO request later and
unfortunately, the retry will happen in L1's context. And it will cause the
problem. The fixing is that if there is a pending IO request, no virtual
vmexit/vmentry is allowed.

Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Acked-by: Jun Nakajima <jun.nakajima@intel.com>
xen/arch/x86/hvm/vmx/vvmx.c