Message ID | 1366380388-25926-3-git-send-email-agraf@suse.de |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 19, 2013 at 04:06:13PM +0200, Alexander Graf wrote: > Quite a bit of code in KVM has been conditionalized on availability of > IOAPIC emulation. However, most of it is generically applicable to > platforms that don't have an IOPIC, but a different type of irq chip. > > Make code that only relies on IRQ routing, not an APIC itself, on > CONFIG_HAVE_KVM_IRQ_ROUTING, so that we can reuse it later. > > Signed-off-by: Alexander Graf <agraf@suse.de> Acked-by: Michael S. Tsirkin <mst@redhat.com> > --- > arch/x86/kvm/Kconfig | 1 + > include/linux/kvm_host.h | 6 +++--- > virt/kvm/Kconfig | 3 +++ > virt/kvm/eventfd.c | 6 +++--- > virt/kvm/kvm_main.c | 2 +- > 5 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig > index 586f000..9d50efd 100644 > --- a/arch/x86/kvm/Kconfig > +++ b/arch/x86/kvm/Kconfig > @@ -29,6 +29,7 @@ config KVM > select MMU_NOTIFIER > select ANON_INODES > select HAVE_KVM_IRQCHIP > + select HAVE_KVM_IRQ_ROUTING > select HAVE_KVM_EVENTFD > select KVM_APIC_ARCHITECTURE > select KVM_ASYNC_PF > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index bf3b1dc..4215d4f 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -304,7 +304,7 @@ struct kvm_kernel_irq_routing_entry { > struct hlist_node link; > }; > > -#ifdef __KVM_HAVE_IOAPIC > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > > struct kvm_irq_routing_table { > int chip[KVM_NR_IRQCHIPS][KVM_IRQCHIP_NUM_PINS]; > @@ -432,7 +432,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); > int __must_check vcpu_load(struct kvm_vcpu *vcpu); > void vcpu_put(struct kvm_vcpu *vcpu); > > -#ifdef __KVM_HAVE_IOAPIC > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > int kvm_irqfd_init(void); > void kvm_irqfd_exit(void); > #else > @@ -957,7 +957,7 @@ static inline int mmu_notifier_retry(struct kvm *kvm, unsigned long mmu_seq) > } > #endif > > -#ifdef KVM_CAP_IRQ_ROUTING > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > > #define KVM_MAX_IRQ_ROUTES 1024 > > diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig > index d01b24b..779262f 100644 > --- a/virt/kvm/Kconfig > +++ b/virt/kvm/Kconfig > @@ -6,6 +6,9 @@ config HAVE_KVM > config HAVE_KVM_IRQCHIP > bool > > +config HAVE_KVM_IRQ_ROUTING > + bool > + > config HAVE_KVM_EVENTFD > bool > select EVENTFD > diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c > index c5d43ff..64ee720 100644 > --- a/virt/kvm/eventfd.c > +++ b/virt/kvm/eventfd.c > @@ -35,7 +35,7 @@ > > #include "iodev.h" > > -#ifdef __KVM_HAVE_IOAPIC > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > /* > * -------------------------------------------------------------------- > * irqfd: Allows an fd to be used to inject an interrupt to the guest > @@ -433,7 +433,7 @@ fail: > void > kvm_eventfd_init(struct kvm *kvm) > { > -#ifdef __KVM_HAVE_IOAPIC > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > spin_lock_init(&kvm->irqfds.lock); > INIT_LIST_HEAD(&kvm->irqfds.items); > INIT_LIST_HEAD(&kvm->irqfds.resampler_list); > @@ -442,7 +442,7 @@ kvm_eventfd_init(struct kvm *kvm) > INIT_LIST_HEAD(&kvm->ioeventfds); > } > > -#ifdef __KVM_HAVE_IOAPIC > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > /* > * shutdown any irqfd's that match fd+gsi > */ > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index aaac1a7..2c3b226 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -2404,7 +2404,7 @@ static long kvm_dev_ioctl_check_extension_generic(long arg) > case KVM_CAP_SIGNAL_MSI: > #endif > return 1; > -#ifdef KVM_CAP_IRQ_ROUTING > +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING > case KVM_CAP_IRQ_ROUTING: > return KVM_MAX_IRQ_ROUTES; > #endif > -- > 1.6.0.2 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig index 586f000..9d50efd 100644 --- a/arch/x86/kvm/Kconfig +++ b/arch/x86/kvm/Kconfig @@ -29,6 +29,7 @@ config KVM select MMU_NOTIFIER select ANON_INODES select HAVE_KVM_IRQCHIP + select HAVE_KVM_IRQ_ROUTING select HAVE_KVM_EVENTFD select KVM_APIC_ARCHITECTURE select KVM_ASYNC_PF diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index bf3b1dc..4215d4f 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -304,7 +304,7 @@ struct kvm_kernel_irq_routing_entry { struct hlist_node link; }; -#ifdef __KVM_HAVE_IOAPIC +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING struct kvm_irq_routing_table { int chip[KVM_NR_IRQCHIPS][KVM_IRQCHIP_NUM_PINS]; @@ -432,7 +432,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); int __must_check vcpu_load(struct kvm_vcpu *vcpu); void vcpu_put(struct kvm_vcpu *vcpu); -#ifdef __KVM_HAVE_IOAPIC +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING int kvm_irqfd_init(void); void kvm_irqfd_exit(void); #else @@ -957,7 +957,7 @@ static inline int mmu_notifier_retry(struct kvm *kvm, unsigned long mmu_seq) } #endif -#ifdef KVM_CAP_IRQ_ROUTING +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING #define KVM_MAX_IRQ_ROUTES 1024 diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig index d01b24b..779262f 100644 --- a/virt/kvm/Kconfig +++ b/virt/kvm/Kconfig @@ -6,6 +6,9 @@ config HAVE_KVM config HAVE_KVM_IRQCHIP bool +config HAVE_KVM_IRQ_ROUTING + bool + config HAVE_KVM_EVENTFD bool select EVENTFD diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index c5d43ff..64ee720 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c @@ -35,7 +35,7 @@ #include "iodev.h" -#ifdef __KVM_HAVE_IOAPIC +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING /* * -------------------------------------------------------------------- * irqfd: Allows an fd to be used to inject an interrupt to the guest @@ -433,7 +433,7 @@ fail: void kvm_eventfd_init(struct kvm *kvm) { -#ifdef __KVM_HAVE_IOAPIC +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING spin_lock_init(&kvm->irqfds.lock); INIT_LIST_HEAD(&kvm->irqfds.items); INIT_LIST_HEAD(&kvm->irqfds.resampler_list); @@ -442,7 +442,7 @@ kvm_eventfd_init(struct kvm *kvm) INIT_LIST_HEAD(&kvm->ioeventfds); } -#ifdef __KVM_HAVE_IOAPIC +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING /* * shutdown any irqfd's that match fd+gsi */ diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index aaac1a7..2c3b226 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2404,7 +2404,7 @@ static long kvm_dev_ioctl_check_extension_generic(long arg) case KVM_CAP_SIGNAL_MSI: #endif return 1; -#ifdef KVM_CAP_IRQ_ROUTING +#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING case KVM_CAP_IRQ_ROUTING: return KVM_MAX_IRQ_ROUTES; #endif
Quite a bit of code in KVM has been conditionalized on availability of IOAPIC emulation. However, most of it is generically applicable to platforms that don't have an IOPIC, but a different type of irq chip. Make code that only relies on IRQ routing, not an APIC itself, on CONFIG_HAVE_KVM_IRQ_ROUTING, so that we can reuse it later. Signed-off-by: Alexander Graf <agraf@suse.de> --- arch/x86/kvm/Kconfig | 1 + include/linux/kvm_host.h | 6 +++--- virt/kvm/Kconfig | 3 +++ virt/kvm/eventfd.c | 6 +++--- virt/kvm/kvm_main.c | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-)