summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorNadav Har'El <nyh@math.technion.ac.il>2011-05-24 15:26:10 +0300
committerAvi Kivity <avi@redhat.com>2011-07-12 11:45:08 +0300
commitd462b8192368f10e979250377930f9695a4039d0 (patch)
tree4ea7e4c8cf963742cfab9a0400f1b4d671684b67 /virt
parent24c82e576b7860a4f02a21103e9df39e11e97006 (diff)
downloadlinux-d462b8192368f10e979250377930f9695a4039d0.tar.gz
linux-d462b8192368f10e979250377930f9695a4039d0.tar.bz2
linux-d462b8192368f10e979250377930f9695a4039d0.zip
KVM: VMX: Keep list of loaded VMCSs, instead of vcpus
In VMX, before we bring down a CPU we must VMCLEAR all VMCSs loaded on it because (at least in theory) the processor might not have written all of its content back to memory. Since a patch from June 26, 2008, this is done using a per-cpu "vcpus_on_cpu" linked list of vcpus loaded on each CPU. The problem is that with nested VMX, we no longer have the concept of a vcpu being loaded on a cpu: A vcpu has multiple VMCSs (one for L1, a pool for L2s), and each of those may be have been last loaded on a different cpu. So instead of linking the vcpus, we link the VMCSs, using a new structure loaded_vmcs. This structure contains the VMCS, and the information pertaining to its loading on a specific cpu (namely, the cpu number, and whether it was already launched on this cpu once). In nested we will also use the same structure to hold L2 VMCSs, and vmx->loaded_vmcs is a pointer to the currently active VMCS. Signed-off-by: Nadav Har'El <nyh@il.ibm.com> Acked-by: Acked-by: Kevin Tian <kevin.tian@intel.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions