Re: [RFC] Next gen kvm api

From: Avi Kivity
Date: Sun Feb 05 2012 - 04:56:22 EST


On 02/05/2012 11:51 AM, Gleb Natapov wrote:
> On Sun, Feb 05, 2012 at 11:44:43AM +0200, Avi Kivity wrote:
> > On 02/05/2012 11:37 AM, Gleb Natapov wrote:
> > > On Thu, Feb 02, 2012 at 06:09:54PM +0200, Avi Kivity wrote:
> > > > Device model
> > > > ------------
> > > > Currently kvm virtualizes or emulates a set of x86 cores, with or
> > > > without local APICs, a 24-input IOAPIC, a PIC, a PIT, and a number of
> > > > PCI devices assigned from the host. The API allows emulating the local
> > > > APICs in userspace.
> > > >
> > > > The new API will do away with the IOAPIC/PIC/PIT emulation and defer
> > > > them to userspace. Note: this may cause a regression for older guests
> > > > that don't support MSI or kvmclock. Device assignment will be done
> > > > using VFIO, that is, without direct kvm involvement.
> > > >
> > > So are we officially saying that KVM is only for modern guest
> > > virtualization?
> >
> > No, but older guests may have reduced performance in some workloads
> > (e.g. RHEL4 gettimeofday() intensive workloads).
> >
> Reduced performance is what I mean. Obviously old guests will continue working.

I'm not happy about it either.

> > > Also my not so old host kernel uses MSI only for NIC.
> > > SATA and USB are using IOAPIC (though this is probably more HW related
> > > than kernel version related).
> >
> > For devices emulated in userspace, it doesn't matter where the IOAPIC
> > is. It only matters for kernel provided devices (PIT, assigned devices,
> > vhost-net).
> >
> What about EOI that will have to do additional exit to userspace for each
> interrupt delivered?

I think the ioapic EOI is asynchronous wrt the core, yes? So the vcpu
can just post the EOI broadcast on the apic-bus socketpair, waking up
the thread handling the ioapic, and continue running. This trades off
vcpu latency for using more host resources.


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/