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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html