Re: [PATCH] KVM: move DR register access handling into generic code.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 12, 2010 at 06:09:50PM +0200, Jan Kiszka wrote:
> Avi Kivity wrote:
> > On 04/12/2010 03:27 PM, Gleb Natapov wrote:
> >> Currently both SVM and VMX have their own DR handling code. Move it to
> >> x86.c.
> >>
> >>    
> > 
> > The standard process is to make them identical first and finally merge 
> > identical code, but I guess we can skip it in this case (Jan?)
> 
> Looks OK, I would just...
> 
> > +int kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val)
> > +{
> > +	switch (dr) {
> > +	case 0 ... 3:
> > +		vcpu->arch.db[dr] = val;
> > +		if (!(vcpu->guest_debug & KVM_GUESTDBG_USE_HW_BP))
> > +			vcpu->arch.eff_db[dr] = val;
> > +		break;
> > +	case 4:
> > +		if (kvm_read_cr4_bits(vcpu, X86_CR4_DE)) {
> > +			kvm_queue_exception(vcpu, UD_VECTOR);
> > +			return 1;
> > +		}
> > +		/* fall through */
> > +	case 6:
> > +		if (val & 0xffffffff00000000ULL) {
> > +			kvm_inject_gp(vcpu, 0);
> > +			return -1;
> 
> ...either return 1 or -1 on failure.
> 
This is a preparation for the future :) Exception injection will be
moved outside the function so different return values are needed to
distinguish different error conditions. Moving exception injection
out is needed so emulator can call the function without it injecting
exception behind emulators back. 

--
			Gleb.
--
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

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux