Ack: Ben Collins <bcoll...@ubuntu.com> Confirmed that this patch does indeed fix everything for me.
On Jun 5, 2012, at 3:03 PM, Jan Kiszka wrote: > A type definition and a KVMState field initialization escaped the > required wrapping with KVM_CAP_IRQ_ROUTING. Also, we need to provide a > dummy kvm_irqchip_release_virq as virtio-pci references (but does not > use) it. > > Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> > --- > > Changes in v2: > - include the missing kvm_irqchip_release_virq that Ben Collins found > > kvm-all.c | 16 +++++++++++----- > 1 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/kvm-all.c b/kvm-all.c > index 489ee53..4ea7d85 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -62,11 +62,6 @@ typedef struct KVMSlot > > typedef struct kvm_dirty_log KVMDirtyLog; > > -typedef struct KVMMSIRoute { > - struct kvm_irq_routing_entry kroute; > - QTAILQ_ENTRY(KVMMSIRoute) entry; > -} KVMMSIRoute; > - > struct KVMState > { > KVMSlot slots[32]; > @@ -867,6 +862,11 @@ int kvm_irqchip_set_irq(KVMState *s, int irq, int level) > } > > #ifdef KVM_CAP_IRQ_ROUTING > +typedef struct KVMMSIRoute { > + struct kvm_irq_routing_entry kroute; > + QTAILQ_ENTRY(KVMMSIRoute) entry; > +} KVMMSIRoute; > + > static void set_gsi(KVMState *s, unsigned int gsi) > { > s->used_gsi_bitmap[gsi / 32] |= 1U << (gsi % 32); > @@ -1129,6 +1129,10 @@ static void kvm_init_irq_routing(KVMState *s) > { > } > > +void kvm_irqchip_release_virq(KVMState *s, int virq) > +{ > +} > + > int kvm_irqchip_send_msi(KVMState *s, MSIMessage msg) > { > abort(); > @@ -1286,7 +1290,9 @@ int kvm_init(void) > s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2); > #endif > > +#ifdef KVM_CAP_IRQ_ROUTING > s->direct_msi = (kvm_check_extension(s, KVM_CAP_SIGNAL_MSI) > 0); > +#endif > > ret = kvm_arch_init(s); > if (ret < 0) { > -- > 1.7.3.4 -- Bluecherry: http://www.bluecherrydvr.com/ SwissDisk : http://www.swissdisk.com/ Ubuntu : http://www.ubuntu.com/ My Blog : http://ben-collins.blogspot.com/