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