2016-07-18 13:25+0000, Eric Auger: > If the ITS modality is not available, let's simply support MSI > injection by transforming the MSI.data into an SPI ID. > > This becomes possible to use KVM_SIGNAL_MSI ioctl and MSI > routing for arm too. > > Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> > > --- > > v6 -> v7: > - move vgic_v2m_inject_msi into vgic-irqfd > > v4 -> v5: > - on vgic_v2m_inject_msi check the msi->data is within the SPI range > - move KVM_HAVE_MSI in the KVM section (to be symetrical with ARM64) > > v2 -> v3: > - reword the commit message > - add sanity check about devid provision > > v1 -> v2: > - introduce vgic_v2m_inject_msi in vgic-v2-emul.c following Andre's > advice > --- > diff --git a/virt/kvm/arm/vgic/vgic-irqfd.c b/virt/kvm/arm/vgic/vgic-irqfd.c > +static int vgic_v2m_inject_msi(struct kvm *kvm, struct kvm_msi *msi) > +{ > + if (msi->flags & KVM_MSI_VALID_DEVID) > + return -EINVAL; > + if (!vgic_valid_spi(kvm, msi->data)) > + return -EINVAL; > + > + return kvm_vgic_inject_irq(kvm, 0, msi->data, 1); Hm, this isn't very MSI related ... arm already has KVM_IRQ_LINE/kvm_vm_ioctl_irq_line with KVM_ARM_IRQ_TYPE_SPI that does kvm_vgic_inject_irq(kvm, 0, irq_num, level) Is that interface lacking? Thanks. > +} > + > +/** > * kvm_set_msi: inject the MSI corresponding to the > * MSI routing entry > * > @@ -96,7 +113,7 @@ int kvm_set_msi(struct kvm_kernel_irq_routing_entry *e, > msi.devid = e->msi_devid; > > if (!vgic_has_its(kvm)) > - return -ENODEV; > + return vgic_v2m_inject_msi(kvm, &msi); > > return vgic_its_inject_msi(kvm, &msi); > } > -- > 1.9.1 > > -- > 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 -- 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