 25a2150bee
			
		
	
	
	25a2150bee
	
	
	
		
			
			This makes it possible to use IRQFDs on platforms that use the XICS interrupt controller. To do this we implement kvm_irq_map_gsi() and kvm_irq_map_chip_pin() in book3s_xics.c, so as to provide a 1-1 mapping between global interrupt numbers and XICS interrupt source numbers. For now, all interrupts are mapped as "IRQCHIP" interrupts, and no MSI support is provided. This means that kvm_set_irq can now get called with level == 0 or 1 as well as the powerpc-specific values KVM_INTERRUPT_SET, KVM_INTERRUPT_UNSET and KVM_INTERRUPT_SET_LEVEL. We change ics_deliver_irq() to accept all those values, and remove its report_status argument, as it is always false, given that we don't support KVM_IRQ_LINE_STATUS. This also adds support for interrupt ack notifiers to the XICS code so that the IRQFD resampler functionality can be supported. 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>
		
			
				
	
	
		
			182 lines
		
	
	
	
		
			5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
	
		
			5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # KVM configuration
 | |
| #
 | |
| 
 | |
| source "virt/kvm/Kconfig"
 | |
| 
 | |
| menuconfig VIRTUALIZATION
 | |
| 	bool "Virtualization"
 | |
| 	---help---
 | |
| 	  Say Y here to get to see options for using your Linux host to run
 | |
| 	  other operating systems inside virtual machines (guests).
 | |
| 	  This option alone does not add any kernel code.
 | |
| 
 | |
| 	  If you say N, all options in this submenu will be skipped and
 | |
| 	  disabled.
 | |
| 
 | |
| if VIRTUALIZATION
 | |
| 
 | |
| config KVM
 | |
| 	bool
 | |
| 	select PREEMPT_NOTIFIERS
 | |
| 	select ANON_INODES
 | |
| 	select HAVE_KVM_EVENTFD
 | |
| 
 | |
| config KVM_BOOK3S_HANDLER
 | |
| 	bool
 | |
| 
 | |
| config KVM_BOOK3S_32_HANDLER
 | |
| 	bool
 | |
| 	select KVM_BOOK3S_HANDLER
 | |
| 	select KVM_MMIO
 | |
| 
 | |
| config KVM_BOOK3S_64_HANDLER
 | |
| 	bool
 | |
| 	select KVM_BOOK3S_HANDLER
 | |
| 
 | |
| config KVM_BOOK3S_PR_POSSIBLE
 | |
| 	bool
 | |
| 	select KVM_MMIO
 | |
| 	select MMU_NOTIFIER
 | |
| 
 | |
| config KVM_BOOK3S_HV_POSSIBLE
 | |
| 	bool
 | |
| 
 | |
| config KVM_BOOK3S_32
 | |
| 	tristate "KVM support for PowerPC book3s_32 processors"
 | |
| 	depends on PPC_BOOK3S_32 && !SMP && !PTE_64BIT
 | |
| 	select KVM
 | |
| 	select KVM_BOOK3S_32_HANDLER
 | |
| 	select KVM_BOOK3S_PR_POSSIBLE
 | |
| 	---help---
 | |
| 	  Support running unmodified book3s_32 guest kernels
 | |
| 	  in virtual machines on book3s_32 host processors.
 | |
| 
 | |
| 	  This module provides access to the hardware capabilities through
 | |
| 	  a character device node named /dev/kvm.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_BOOK3S_64
 | |
| 	tristate "KVM support for PowerPC book3s_64 processors"
 | |
| 	depends on PPC_BOOK3S_64
 | |
| 	select KVM_BOOK3S_64_HANDLER
 | |
| 	select KVM
 | |
| 	select KVM_BOOK3S_PR_POSSIBLE if !KVM_BOOK3S_HV_POSSIBLE
 | |
| 	---help---
 | |
| 	  Support running unmodified book3s_64 and book3s_32 guest kernels
 | |
| 	  in virtual machines on book3s_64 host processors.
 | |
| 
 | |
| 	  This module provides access to the hardware capabilities through
 | |
| 	  a character device node named /dev/kvm.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_BOOK3S_64_HV
 | |
| 	tristate "KVM support for POWER7 and PPC970 using hypervisor mode in host"
 | |
| 	depends on KVM_BOOK3S_64
 | |
| 	select KVM_BOOK3S_HV_POSSIBLE
 | |
| 	select MMU_NOTIFIER
 | |
| 	select CMA
 | |
| 	---help---
 | |
| 	  Support running unmodified book3s_64 guest kernels in
 | |
| 	  virtual machines on POWER7 and PPC970 processors that have
 | |
| 	  hypervisor mode available to the host.
 | |
| 
 | |
| 	  If you say Y here, KVM will use the hardware virtualization
 | |
| 	  facilities of POWER7 (and later) processors, meaning that
 | |
| 	  guest operating systems will run at full hardware speed
 | |
| 	  using supervisor and user modes.  However, this also means
 | |
| 	  that KVM is not usable under PowerVM (pHyp), is only usable
 | |
| 	  on POWER7 (or later) processors and PPC970-family processors,
 | |
| 	  and cannot emulate a different processor from the host processor.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_BOOK3S_64_PR
 | |
| 	tristate "KVM support without using hypervisor mode in host"
 | |
| 	depends on KVM_BOOK3S_64
 | |
| 	select KVM_BOOK3S_PR_POSSIBLE
 | |
| 	---help---
 | |
| 	  Support running guest kernels in virtual machines on processors
 | |
| 	  without using hypervisor mode in the host, by running the
 | |
| 	  guest in user mode (problem state) and emulating all
 | |
| 	  privileged instructions and registers.
 | |
| 
 | |
| 	  This is not as fast as using hypervisor mode, but works on
 | |
| 	  machines where hypervisor mode is not available or not usable,
 | |
| 	  and can emulate processors that are different from the host
 | |
| 	  processor, including emulating 32-bit processors on a 64-bit
 | |
| 	  host.
 | |
| 
 | |
| config KVM_BOOKE_HV
 | |
| 	bool
 | |
| 
 | |
| config KVM_EXIT_TIMING
 | |
| 	bool "Detailed exit timing"
 | |
| 	depends on KVM_E500V2 || KVM_E500MC
 | |
| 	---help---
 | |
| 	  Calculate elapsed time for every exit/enter cycle. A per-vcpu
 | |
| 	  report is available in debugfs kvm/vm#_vcpu#_timing.
 | |
| 	  The overhead is relatively small, however it is not recommended for
 | |
| 	  production environments.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_E500V2
 | |
| 	bool "KVM support for PowerPC E500v2 processors"
 | |
| 	depends on E500 && !PPC_E500MC
 | |
| 	select KVM
 | |
| 	select KVM_MMIO
 | |
| 	select MMU_NOTIFIER
 | |
| 	---help---
 | |
| 	  Support running unmodified E500 guest kernels in virtual machines on
 | |
| 	  E500v2 host processors.
 | |
| 
 | |
| 	  This module provides access to the hardware capabilities through
 | |
| 	  a character device node named /dev/kvm.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_E500MC
 | |
| 	bool "KVM support for PowerPC E500MC/E5500/E6500 processors"
 | |
| 	depends on PPC_E500MC
 | |
| 	select KVM
 | |
| 	select KVM_MMIO
 | |
| 	select KVM_BOOKE_HV
 | |
| 	select MMU_NOTIFIER
 | |
| 	---help---
 | |
| 	  Support running unmodified E500MC/E5500/E6500 guest kernels in
 | |
| 	  virtual machines on E500MC/E5500/E6500 host processors.
 | |
| 
 | |
| 	  This module provides access to the hardware capabilities through
 | |
| 	  a character device node named /dev/kvm.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| 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
 | |
| 	  Enable support for emulating MPIC devices inside the
 | |
|           host kernel, rather than relying on userspace to emulate.
 | |
|           Currently, support is limited to certain versions of
 | |
|           Freescale's MPIC implementation.
 | |
| 
 | |
| config KVM_XICS
 | |
| 	bool "KVM in-kernel XICS emulation"
 | |
| 	depends on KVM_BOOK3S_64 && !KVM_MPIC
 | |
| 	select HAVE_KVM_IRQCHIP
 | |
| 	select HAVE_KVM_IRQFD
 | |
| 	---help---
 | |
| 	  Include support for the XICS (eXternal Interrupt Controller
 | |
| 	  Specification) interrupt controller architecture used on
 | |
| 	  IBM POWER (pSeries) servers.
 | |
| 
 | |
| source drivers/vhost/Kconfig
 | |
| 
 | |
| endif # VIRTUALIZATION
 |