Il 16/06/2014 19:02, Bandan Das ha scritto:
> -  vmcs_write64(GUEST_IA32_DEBUGCTL, vmcs12->guest_ia32_debugctl);
> +  if (vmcs12->vm_entry_controls & VM_ENTRY_LOAD_DEBUG_CONTROLS) {
> +          kvm_set_dr(vcpu, 7, vmcs12->guest_dr7);
> +          vmcs_write64(GUEST_IA32_DEBUGCTL, vmcs12->guest_ia32_debugctl);
> +  } else {
> +          kvm_set_dr(vcpu, 7, vcpu->arch.dr7);
> +          vmcs_write64(GUEST_IA32_DEBUGCTL, vmx->nested.vmcs01_debugctl);
> +  }

(I guess I don't understand DEBUGCTLS enough) vmcs01_debugctl is used by
L0 to run L1, and if L1 hasn't set VM_ENTRY_LOAD_DEBUG_CONTROLS for L2,
why do we need the GUEST_IA32_DEBUGCTL vmwrite in the "else" case ?

Beause we always set VM_ENTRY_LOAD_DEBUG_CONTROLS in the VMCS02, so we must always fill in GUEST_IA32_DEBUGCTL of the VMCS02. Depending on the VMCS12's VM_ENTRY_LOAD_DEBUG_CONTROLS, the field comes from either VMCS01 or VMCS12.

Paolo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to