Re: [PATCH 0/6] IRQFD without IRQ routing, enabled for XICS

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

 



On Mon, Jun 30, 2014 at 02:43:56PM +0200, Alexander Graf wrote:
> 
> On 30.06.14 12:51, Paul Mackerras wrote:
> >This series of patches provides a way to implement IRQFD support
> >without having to implement IRQ routing, and adds IRQFD support for
> >the XICS interrupt controller emulation.  (XICS is the interrupt
> >controller defined for the pSeries machine type, used on IBM POWER
> >servers).
> >
> >The basic approach is to make it easy for code other than irqchip.c to
> >provide a mapping from a global interrupt number (GSI) to an irq
> >routing entry (struct kvm_kernel_irq_routing_entry).  To make the
> >lifetime of this routing entry easier to manage, we change the IRQFD
> >code to keep a copy of the routing entry (for the MSI fast-path case)
> >rather than a pointer to the routing entry.  Since the copy can't be
> >updated atomically, we add a seqcount_t to make sure that when reading
> >it we get a copy that hasn't been half-way updated.
> >
> >Next we replace the hard-coded accesses outside irqchip.c to the
> >fields of the kvm_irq_routing_table struct with calls to accessor
> >functions in irqchip.c, namely kvm_irq_map_gsi() and
> >kvm_irq_map_chip_pin().  That enables us to move all references to the
> >kvm_irq_routing_table struct, and the definition of that struct, into
> >irqchip.c.
> >
> >Then we move the irq notifier implementation from irqchip.c into
> >eventfd.c and add a separate Kconfig option to enable IRQFD.  With
> >that we can enable IRQFD without irq routing, which we achieve by
> >compiling in eventfd.c but not irqchip.c, and providing an alternative
> >implementation of kvm_irq_map_gsi() and kvm_irq_map_chip_pin().
> >
> >The last patch does that for XICS.  With this series I can use
> >vhost-net with KVM guests, and I see the TCP bandwidth between guest
> >and host on a POWER8 machine go from around 700MB/s to over 2GB/s.
> >
> >I would like to see this go into 3.17.
> 
> I think this approach is good enough for XICS, as it has a 100% flat number
> space. I'm not yet fully convinced how well this would work out with the
> GIC, but I know that one too little to make claims.
> 
> The only thing I disliked about this patch set is that it adds another piece
> of code that makes MPIC/XICS exclusive options. But I don't think that'd be
> hard to solve if we start caring.

I agree.  They were already exclusive, of course, and I just followed
that pattern.  I don't think I made it any harder to change that.

The other thing this patch set does is make it a lot easier to change
the data structures used by the IRQ routing implementation, for
example to use idr structs rather than flat arrays, if we want to,
or to implement range routing entries.

> Overall, nice work.

Thanks.

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