Re: [PATCH 3/5] kvm/svm: enhance mov DR intercept handler

Avi Kivity
2010-12-07T13:25:27Z

On 12/07/2010 12:59 PM, Andre Przywara wrote:
> Newer SVM implementations provide the GPR number in the VMCB, so
> that the emulation path is no longer necesarry to handle debug
> register access intercepts. Implement the handling in svm.c and
> use it when the info is provided.
>
>
>
> +static int dr_interception(struct vcpu_svm *svm)
> +{
> + int reg, dr;
> + unsigned long val;
> +
> + if (!boot_cpu_has(SVM_FEATURE_DECODE_ASSIST))
> + return emulate_on_interception(svm);
> +
> + reg = svm->vmcb->control.exit_info_1& SVM_EXITINFO_REG_MASK;
> + dr = svm->vmcb->control.exit_code - SVM_EXIT_READ_DR0;
> +
> + if (dr> 15) { /* mov to DRn */
> + val = kvm_register_read(&svm->vcpu, reg);
> + kvm_set_dr(&svm->vcpu, dr - 16, val);
> + } else {
> + kvm_get_dr(&svm->vcpu, dr,&val);
> + kvm_register_write(&svm->vcpu, reg, val);
> + }
> +
> + skip_emulated_instruction(&svm->vcpu);
> + return 1;
> +}

Again, need to handle faults.

--
error compiling committee.c: too many arguments to function