mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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: Paul Mackerras <paulus@samba.org> Tested-by: Eric Auger <eric.auger@linaro.org> Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									e4d57e1ee1
								
							
						
					
					
						commit
						297e21053a
					
				
					 8 changed files with 15 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -25,6 +25,7 @@ config KVM
 | 
			
		|||
	select PREEMPT_NOTIFIERS
 | 
			
		||||
	select ANON_INODES
 | 
			
		||||
	select HAVE_KVM_IRQCHIP
 | 
			
		||||
	select HAVE_KVM_IRQFD
 | 
			
		||||
	select HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
	select KVM_APIC_ARCHITECTURE
 | 
			
		||||
	select KVM_MMIO
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -158,6 +158,7 @@ config KVM_MPIC
 | 
			
		|||
	bool "KVM in-kernel MPIC emulation"
 | 
			
		||||
	depends on KVM && E500
 | 
			
		||||
	select HAVE_KVM_IRQCHIP
 | 
			
		||||
	select HAVE_KVM_IRQFD
 | 
			
		||||
	select HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
	select HAVE_KVM_MSI
 | 
			
		||||
	help
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ config KVM
 | 
			
		|||
	select KVM_ASYNC_PF
 | 
			
		||||
	select KVM_ASYNC_PF_SYNC
 | 
			
		||||
	select HAVE_KVM_IRQCHIP
 | 
			
		||||
	select HAVE_KVM_IRQFD
 | 
			
		||||
	select HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
	---help---
 | 
			
		||||
	  Support hosting paravirtualized guest machines using the SIE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ config KVM
 | 
			
		|||
	select MMU_NOTIFIER
 | 
			
		||||
	select ANON_INODES
 | 
			
		||||
	select HAVE_KVM_IRQCHIP
 | 
			
		||||
	select HAVE_KVM_IRQFD
 | 
			
		||||
	select HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
	select HAVE_KVM_EVENTFD
 | 
			
		||||
	select KVM_APIC_ARCHITECTURE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -437,7 +437,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 CONFIG_HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQFD
 | 
			
		||||
int kvm_irqfd_init(void);
 | 
			
		||||
void kvm_irqfd_exit(void);
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -932,20 +932,20 @@ int kvm_set_routing_entry(struct kvm_kernel_irq_routing_entry *e,
 | 
			
		|||
			  const struct kvm_irq_routing_entry *ue);
 | 
			
		||||
void kvm_free_irq_routing(struct kvm *kvm);
 | 
			
		||||
 | 
			
		||||
int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
static inline void kvm_free_irq_routing(struct kvm *kvm) {}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_EVENTFD
 | 
			
		||||
 | 
			
		||||
void kvm_eventfd_init(struct kvm *kvm);
 | 
			
		||||
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);
 | 
			
		||||
void kvm_irqfd_release(struct kvm *kvm);
 | 
			
		||||
void kvm_irq_routing_update(struct kvm *);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,9 @@ config HAVE_KVM
 | 
			
		|||
config HAVE_KVM_IRQCHIP
 | 
			
		||||
       bool
 | 
			
		||||
 | 
			
		||||
config HAVE_KVM_IRQFD
 | 
			
		||||
       bool
 | 
			
		||||
 | 
			
		||||
config HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
       bool
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,7 @@
 | 
			
		|||
#include "irq.h"
 | 
			
		||||
#include "iodev.h"
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQFD
 | 
			
		||||
/*
 | 
			
		||||
 * --------------------------------------------------------------------
 | 
			
		||||
 * irqfd: Allows an fd to be used to inject an interrupt to the guest
 | 
			
		||||
| 
						 | 
				
			
			@ -450,7 +450,7 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
 | 
			
		|||
void
 | 
			
		||||
kvm_eventfd_init(struct kvm *kvm)
 | 
			
		||||
{
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQFD
 | 
			
		||||
	spin_lock_init(&kvm->irqfds.lock);
 | 
			
		||||
	INIT_LIST_HEAD(&kvm->irqfds.items);
 | 
			
		||||
	INIT_LIST_HEAD(&kvm->irqfds.resampler_list);
 | 
			
		||||
| 
						 | 
				
			
			@ -459,7 +459,7 @@ kvm_eventfd_init(struct kvm *kvm)
 | 
			
		|||
	INIT_LIST_HEAD(&kvm->ioeventfds);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQFD
 | 
			
		||||
/*
 | 
			
		||||
 * shutdown any irqfd's that match fd+gsi
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2337,7 +2337,7 @@ static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg)
 | 
			
		|||
#ifdef CONFIG_HAVE_KVM_MSI
 | 
			
		||||
	case KVM_CAP_SIGNAL_MSI:
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
 | 
			
		||||
#ifdef CONFIG_HAVE_KVM_IRQFD
 | 
			
		||||
	case KVM_CAP_IRQFD_RESAMPLE:
 | 
			
		||||
#endif
 | 
			
		||||
	case KVM_CAP_CHECK_EXTENSION_VM:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue