KVM: Fix guest shared interrupt with in-kernel irqchip
authorSheng Yang <sheng@linux.intel.com>
Wed, 15 Oct 2008 12:15:06 +0000 (20:15 +0800)
committerAvi Kivity <avi@redhat.com>
Tue, 28 Oct 2008 12:21:34 +0000 (14:21 +0200)
commit5550af4df179e52753d3a43a788a113ad8cd95cd
treef19274a4f7e345e70e7da713f44c1dcccdb134e8
parent6ad9f15c94822c3f067a7d443f3b414e08b34460
KVM: Fix guest shared interrupt with in-kernel irqchip

Every call of kvm_set_irq() should offer an irq_source_id, which is
allocated by kvm_request_irq_source_id(). Based on irq_source_id, we
identify the irq source and implement logical OR for shared level
interrupts.

The allocated irq_source_id can be freed by kvm_free_irq_source_id().

Currently, we support at most sizeof(unsigned long) different irq sources.

[Amit: - rebase to kvm.git HEAD
       - move definition of KVM_USERSPACE_IRQ_SOURCE_ID to common file
       - move kvm_request_irq_source_id to the update_irq ioctl]

[Xiantao: - Add kvm/ia64 stuff and make it work for kvm/ia64 guests]

Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/ia64/include/asm/kvm_host.h
arch/ia64/kvm/kvm-ia64.c
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/i8254.c
arch/x86/kvm/i8254.h
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/irq_comm.c
virt/kvm/kvm_main.c