Re: [PATCH v3 2/4] x86, apicv: add APICv register virtualization support

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

 



On Wed, Dec 05, 2012 at 09:11:40PM -0200, Marcelo Tosatti wrote:
> > >> +static int handle_apic_write(struct kvm_vcpu *vcpu)
> > >> +{
> > >> +	unsigned long exit_qualification = vmcs_readl(EXIT_QUALIFICATION);
> > >> +	u32 offset = exit_qualification & 0xfff;
> > >> +
> > >> +	/* APIC-write VM exit is trap-like and thus no need to adjust IP */
> > >> +	return kvm_apic_write_nodecode(vcpu, offset) == 0;
> > >> +}
> > > 
> > > Point of return value == 0?
> > if kvm_apic_write_nodecode() handle successfully, it will return zero. Then it will return 1 for this vmexit handle.
> > What's wrong?
> 
> If kvm_apic_write_nodecode fails (return 0 for the vmexit handle), 
> there is an exit to userspace. Why is that necessary?
kvm_apic_write_nodecode() returns apic_reg_write() value.
apic_reg_write() returns 1 when #GP should be injected if used from
MSR, if used from mmio apic_reg_write() is ignored since errors cannot
be reported to a cpu. Since kvm_apic_write_nodecode() is used for mmio
only make it void and ignore apic_reg_write() return value.

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