Re: Today's KVM/ARM Sync-up Call

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

 



On Tue, May 06, 2014 at 04:11:46PM +0200, Antonios Motakis wrote:
> Hello Christoffer,
> 
Hi Antonios,

[...]

> 
> Doing this, we would have to make the implementation in vgic.c consistent with
> other IRQCHIPS, by using the irqchip.c common code and putting it behind the
> KVM IO BUS API.
> 
> However this would be just the default way IRQs would be routed to
> guests.  With IRQ routing the user can change this at will.

What do you mean with these two sentences?

> Since we
> don't want to keep the limitation of 256 vCPUs, we are currently
> proposing this:

This is a fair motivation, is it the only one, and does it only apply to
PPIs?

Do you imagine that SPIs always target all CPUs?  Is that how it works
for GICv3?

> 
> New capability: KVM_CAP_IRQ_ROUTING_PPI
> 
> In addition to the existing routing entry types:
> /* gsi routing entry types */
> #define KVM_IRQ_ROUTING_IRQCHIP 1
> #define KVM_IRQ_ROUTING_MSI 2
> 
> Add new routing entry type:
> #define KVM_IRQ_ROUTING_IRQCHIP_PPI 3
> 
> In the kvm_irq_routing entry struct add an entry for the new union case:
> struct kvm_irq_routing_entry {
>     __u32 gsi;
>     __u32 type;
>     __u32 flags;
>     __u32 pad;
>     union {
>         struct kvm_irq_routing_irqchip irqchip;
>         struct kvm_irq_routing_irqchip_ppi irqchip_ppi;
> 
>         struct kvm_irq_routing_msi msi;
>         __u32 pad[8];
>     } u;
> };
> The new structure may look like this:
> struct kvm_irq_routing_irqchip {
>     __u32 irqchip;
>     __u32 vcpu;
>     __u32 pin;
> };

you mean struct kvm_irq_routing_irqchip_ppi?

> 
> 
> SPIs would be set the usual way via the KVM_IRQ_ROUTING_IRQCHIP type.
> PPIs would be set using the new KVM_IRQ_ROUTING_IRQCHIP_PPI type, and
> the target VCPU may be specified via __u32 vcpu.
> 
> The __u32 vcpu variable would be interpreted as is currently done with
> KVM_IRQ_LINE on ARM: via kvm_get_vcpu(kvm, vcpu_idx).
> 
> This way more than 256 VCPUs may be added to a system without breaking
> KVM_IRQ_LINE; it suffices to create new routing tables for the VGIC
> (the default ones will still map to only 256 VCPUs).
> 
> =====================================================================
> The VFIO Side
> 
> For VFIO_PLATFORM it is not a different story than what VFIO already does on
> x86. We are going to support the same API already documented in
> include/uapi/linux/vfio.h and will be part of the next version of the
> VFIO_PLATFORM patches.
> 
> In this case, instead of injecting interrupts via an IOCTL, the user
> will use a eventfds to inject interrupts, and also mask/unmask them.
> 
> 

Thanks,
-Christoffer
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm




[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux