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@xxxxxxx> Acked-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html