Re: [RFC PATCH] KVM: optimize apic interrupt delivery

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

 



On Tue, Sep 11, 2012 at 03:04:36PM +0300, Avi Kivity wrote:
> On 09/11/2012 12:45 PM, Gleb Natapov wrote:
> >> >> 
> >> > There is no userspace to return error to if error happens on guest MMIO
> >> > write. Unless you mean return it as a return value of ioctl(VM_RUN) in
> >> > which case it is equivalent of killing the guest. 
> >> 
> >> That is what I meant.
> >> 
> >> > And this is not fair
> >> > to a guest who did nothing wrong to suffer from our stupid optimizations :)
> >> > Actually I am not sure that returning to userspace in the middle of an
> >> > IO that is handled by a kernel is well defined in KVM ABI.
> >> 
> >> If you get -ENOMEM when allocating a page without GFP_ATOMIC (or
> >> GFP_NOIO etc) then the entire host is dead anyway.  The same thing can
> >> happen if the guest (or userspace) touches a yet-unallocated page, or if
> >> the page fault path fails to allocate mmu pages, or any of a thousand
> >> other allocations we have all over.
> > Then it is just simpler to sigkill the guest right away. What's the
> > point in returning error if you believe that userspace can't handle it
> > and will likely not run long enough to even get to userspace due to
> > memory shortage.
> 
> Syscalls don't SIGKILL (well except kill(2)).  They report errors.  The
> only other alternative is SIGBUS.
> 
Anything that will put guest out of its misery.

> > 
> >> 
> >> > 
> >> >> >> 
> >> >> > Actually I have an idea how to handle the error. Never return one. If
> >> >> > map cannot be allocated go slow path always. phys_map should be checked
> >> >> > for NULL during delivery in this case obviously.
> >> >> 
> >> >> That's better of course (though we have to beware of such tricks, but in
> >> >> this case the slow path is regularly exercised so it should keep working).
> >> >> 
> >> > Oh with Windows guests it has work to do for sure.
> >> 
> >> This reminds me, we could speed up self-ipi for that.
> >> 
> > The patch does it. Windows sends a lot of all but self IPIs too.
> 
> I thought it bailed out if a destination shorthand was used?
> 
This is highly sophisticated patch! It checks for APIC_DEST_SELF before
bailing out.

        if (irq->shorthand == APIC_DEST_SELF) {
                *r = kvm_apic_set_irq(src->vcpu, irq);
                return true;
        }

        if (irq->shorthand)
                return false;

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