Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 297e2105 authored by Paul Mackerras's avatar Paul Mackerras Committed by Paolo Bonzini
Browse files

KVM: Give IRQFD its own separate enabling Kconfig option



Currently, the IRQFD code is conditional on CONFIG_HAVE_KVM_IRQ_ROUTING.
So that we can have the IRQFD code compiled in without having the
IRQ routing code, this creates a new CONFIG_HAVE_KVM_IRQFD, makes
the IRQFD code conditional on it instead of CONFIG_HAVE_KVM_IRQ_ROUTING,
and makes all the platforms that currently select HAVE_KVM_IRQ_ROUTING
also select HAVE_KVM_IRQFD.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
Tested-by: default avatarEric Auger <eric.auger@linaro.org>
Tested-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent e4d57e1e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ config KVM
	select PREEMPT_NOTIFIERS
	select PREEMPT_NOTIFIERS
	select ANON_INODES
	select ANON_INODES
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQFD
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_IRQ_ROUTING
	select KVM_APIC_ARCHITECTURE
	select KVM_APIC_ARCHITECTURE
	select KVM_MMIO
	select KVM_MMIO
+1 −0
Original line number Original line Diff line number Diff line
@@ -158,6 +158,7 @@ config KVM_MPIC
	bool "KVM in-kernel MPIC emulation"
	bool "KVM in-kernel MPIC emulation"
	depends on KVM && E500
	depends on KVM && E500
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQFD
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_MSI
	select HAVE_KVM_MSI
	help
	help
+1 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ config KVM
	select KVM_ASYNC_PF
	select KVM_ASYNC_PF
	select KVM_ASYNC_PF_SYNC
	select KVM_ASYNC_PF_SYNC
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQFD
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_IRQ_ROUTING
	---help---
	---help---
	  Support hosting paravirtualized guest machines using the SIE
	  Support hosting paravirtualized guest machines using the SIE
+1 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@ config KVM
	select MMU_NOTIFIER
	select MMU_NOTIFIER
	select ANON_INODES
	select ANON_INODES
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQFD
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_IRQ_ROUTING
	select HAVE_KVM_EVENTFD
	select HAVE_KVM_EVENTFD
	select KVM_APIC_ARCHITECTURE
	select KVM_APIC_ARCHITECTURE
+4 −4
Original line number Original line Diff line number Diff line
@@ -437,7 +437,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
int __must_check vcpu_load(struct kvm_vcpu *vcpu);
int __must_check vcpu_load(struct kvm_vcpu *vcpu);
void vcpu_put(struct kvm_vcpu *vcpu);
void vcpu_put(struct kvm_vcpu *vcpu);


#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
#ifdef CONFIG_HAVE_KVM_IRQFD
int kvm_irqfd_init(void);
int kvm_irqfd_init(void);
void kvm_irqfd_exit(void);
void kvm_irqfd_exit(void);
#else
#else
@@ -932,20 +932,20 @@ int kvm_set_routing_entry(struct kvm_kernel_irq_routing_entry *e,
			  const struct kvm_irq_routing_entry *ue);
			  const struct kvm_irq_routing_entry *ue);
void kvm_free_irq_routing(struct kvm *kvm);
void kvm_free_irq_routing(struct kvm *kvm);


int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);

#else
#else


static inline void kvm_free_irq_routing(struct kvm *kvm) {}
static inline void kvm_free_irq_routing(struct kvm *kvm) {}


#endif
#endif


int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);

#ifdef CONFIG_HAVE_KVM_EVENTFD
#ifdef CONFIG_HAVE_KVM_EVENTFD


void kvm_eventfd_init(struct kvm *kvm);
void kvm_eventfd_init(struct kvm *kvm);
int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);
int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);


#ifdef CONFIG_HAVE_KVM_IRQCHIP
#ifdef CONFIG_HAVE_KVM_IRQFD
int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args);
int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args);
void kvm_irqfd_release(struct kvm *kvm);
void kvm_irqfd_release(struct kvm *kvm);
void kvm_irq_routing_update(struct kvm *);
void kvm_irq_routing_update(struct kvm *);
Loading