Re: [PATCH 0/1] x2apic implementation for kvm

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

 



On Mon, May 25, 2009 at 02:30:05PM +0800, Sheng Yang wrote:
> On Monday 25 May 2009 14:13:23 Gleb Natapov wrote:
> > On Mon, May 25, 2009 at 02:08:26PM +0800, Sheng Yang wrote:
> > > On Friday 22 May 2009 01:37:53 Gleb Natapov wrote:
> > > > This is implementation of x2apic for KVM that I wrote a while ago.
> > > > Unfortunately there is no guest that can take advantage of it since
> > > > Linux doesn't (yet?) use x2apic if interrupt remapping is not enabled
> > > > and I don't feel like implement interrupt remapping device :)
> > > >
> > > > Re-based to latest kvm tree for your viewing pleasure and feedback.
> > >
> > > Yeah... x2apic is for interrupt remapping, and interrupt remapping is for
> > > VT-d engine. So if we don't want to virtualize VT-d engine and interrupt
> > > remapping, x2apic is useless for the guest... And VT-d engine(and related
> > > things) virtualization is far from our scope now...
> >
> > Can you explain why "x2apic is for interrupt remapping"? I can understand
> > why interrupt remapping is needed to use x2apic in certain circumstances
> > (apic ids > 256). x2apic has better virtualizable interface and that
> > is why we want to emulate it. Can you name one technical reason why it
> > can't be done in a context of KVM?
> 
> As you know, x2apic is for apic id > 256. So, at least on the real machine, if 
> there is no interrupt remapping, x2apic almost can't take much advantage, 
> because IOAPIC and MSI/MSI-X delivery still using 8bit apic id, so any 
> external interrupt can't benefit from it(though IPI can benefit some, and 
> maybe some gain from MSR rather than MMIO). And this is the main purpose for 
> x2apic, that's why Linux kernel limited x2apic using with interrupt remapping.
> 
> I am not sure the things looks like in the context of KVM. I think mostly even 
> you virtualize it, it can't replace lapic, for guest won't use it(I am not 
> sure about the Windows). Can you explain more detail?
KVM will expose x2apic, but will use apic ids < 256. Linux has to be
changed to use x2apic if it runs as a guest. Windows, when running as a
guest, partially paravirtualize lapic by using MSRs to access frequently
used registers. The MSR interface Windows uses is very similar to x2apic
by the way and KVM will support it too.

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