From 2eb7ffa0699870016478ce2fcbf8c746a5300f19 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 11 Aug 2011 12:04:07 +0300 Subject: [PATCH] kvm tools: Fix IRQ mapping This thread fixes two issues: - Slave IRQCHIP was mapped wrong, this caused all IRQs which belong to it to be ignored (breaking such things as the mouse). - Line 2 was being mapped, since it's the link between slave and master IRQCHIPs it shouldn't be. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- irq.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/irq.c b/irq.c index 85e2238..e35bf18 100644 --- a/irq.c +++ b/irq.c @@ -147,17 +147,18 @@ void irq__init(struct kvm *kvm) /* Hook first 8 GSIs to master IRQCHIP */ for (i = 0; i < 8; i++) - irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_MASTER, i); + if (i != 2) + irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_MASTER, i); /* Hook next 8 GSIs to slave IRQCHIP */ for (i = 8; i < 16; i++) - irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_SLAVE, 8-i); + irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_SLAVE, i - 8); /* Last but not least, IOAPIC */ for (i = 0; i < 24; i++) { if (i == 0) irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_IOAPIC, 2); - else + else if (i != 2) irq__add_routing(i, KVM_IRQ_ROUTING_IRQCHIP, IRQCHIP_IOAPIC, i); }