aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2008-11-19 06:58:46 -0500
committerAvi Kivity <avi@redhat.com>2009-03-24 05:03:06 -0400
commit399ec807ddc38ecccf8c06dbde04531cbdc63e11 (patch)
tree75a4e3ee9cfffb4ecf7b4608bb592c89f2b62219 /arch/x86/kvm/x86.c
parent193554750441d91e127dd5066b8aebe0f769101c (diff)
KVM: Userspace controlled irq routing
Currently KVM has a static routing from GSI numbers to interrupts (namely, 0-15 are mapped 1:1 to both PIC and IOAPIC, and 16:23 are mapped 1:1 to the IOAPIC). This is insufficient for several reasons: - HPET requires non 1:1 mapping for the timer interrupt - MSIs need a new method to assign interrupt numbers and dispatch them - ACPI APIC mode needs to be able to reassign the PCI LINK interrupts to the ioapics This patch implements an interrupt routing table (as a linked list, but this can be easily changed) and a userspace interface to replace the table. The routing table is initialized according to the current hardwired mapping. Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 141a0166e51c..32e3a7ec6ad2 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1835,6 +1835,12 @@ long kvm_arch_vm_ioctl(struct file *filp,
1835 } 1835 }
1836 } else 1836 } else
1837 goto out; 1837 goto out;
1838 r = kvm_setup_default_irq_routing(kvm);
1839 if (r) {
1840 kfree(kvm->arch.vpic);
1841 kfree(kvm->arch.vioapic);
1842 goto out;
1843 }
1838 break; 1844 break;
1839 case KVM_CREATE_PIT: 1845 case KVM_CREATE_PIT:
1840 mutex_lock(&kvm->lock); 1846 mutex_lock(&kvm->lock);