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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to