mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
[VMX] Fix use of VMCLEAR a little: no need if not active on any CPU.
Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
66091ed16b
commit
df3f613e31
1 file changed
+10
-5
@@ -74,12 +74,15 @@ static void __vmx_clear_vmcs(void *info)
|
||||
|
||||
static void vmx_clear_vmcs(struct vcpu *v)
|
||||
{
|
||||
unsigned int cpu = v->arch.hvm_vmx.active_cpu;
|
||||
int cpu = v->arch.hvm_vmx.active_cpu;
|
||||
|
||||
if ( (cpu == -1) || (cpu == smp_processor_id()) )
|
||||
__vmx_clear_vmcs(v);
|
||||
else
|
||||
on_selected_cpus(cpumask_of_cpu(cpu), __vmx_clear_vmcs, v, 1, 1);
|
||||
if ( cpu == -1 )
|
||||
return;
|
||||
|
||||
if ( cpu == smp_processor_id() )
|
||||
return __vmx_clear_vmcs(v);
|
||||
|
||||
on_selected_cpus(cpumask_of_cpu(cpu), __vmx_clear_vmcs, v, 1, 1);
|
||||
}
|
||||
|
||||
static void vmx_load_vmcs(struct vcpu *v)
|
||||
@@ -97,6 +100,8 @@ void vmx_vmcs_enter(struct vcpu *v)
|
||||
* context initialisation.
|
||||
* 2. VMPTRLD as soon as we context-switch to a HVM VCPU.
|
||||
* 3. VMCS destruction needs to happen later (from domain_destroy()).
|
||||
* We can relax this a bit if a paused VCPU always commits its
|
||||
* architectural state to a software structure.
|
||||
*/
|
||||
if ( v == current )
|
||||
return;
|
||||
|
||||