mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 14:44:10 +08:00
d58335d10f
* kvm-arm64/tlbi-range: : . : FEAT_TLBIRANGE support, courtesy of Raghavendra Rao Ananta. : From the cover letter: : : "In certain code paths, KVM/ARM currently invalidates the entire VM's : page-tables instead of just invalidating a necessary range. For example, : when collapsing a table PTE to a block PTE, instead of iterating over : each PTE and flushing them, KVM uses 'vmalls12e1is' TLBI operation to : flush all the entries. This is inefficient since the guest would have : to refill the TLBs again, even for the addresses that aren't covered : by the table entry. The performance impact would scale poorly if many : addresses in the VM is going through this remapping. : : For architectures that implement FEAT_TLBIRANGE, KVM can replace such : inefficient paths by performing the invalidations only on the range of : addresses that are in scope. This series tries to achieve the same in : the areas of stage-2 map, unmap and write-protecting the pages." : . KVM: arm64: Use TLBI range-based instructions for unmap KVM: arm64: Invalidate the table entries upon a range KVM: arm64: Flush only the memslot after write-protect KVM: arm64: Implement kvm_arch_flush_remote_tlbs_range() KVM: arm64: Define kvm_tlb_flush_vmid_range() KVM: arm64: Implement __kvm_tlb_flush_vmid_range() arm64: tlb: Implement __flush_s2_tlb_range_op() arm64: tlb: Refactor the core flush algorithm of __flush_tlb_range KVM: Move kvm_arch_flush_remote_tlbs_memslot() to common code KVM: Allow range-based TLB invalidation from common code KVM: Remove CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL KVM: arm64: Use kvm_arch_flush_remote_tlbs() KVM: Declare kvm_arch_flush_remote_tlbs() globally KVM: Rename kvm_arch_flush_remote_tlb() to kvm_arch_flush_remote_tlbs() Signed-off-by: Marc Zyngier <maz@kernel.org>
75 lines
1.9 KiB
Plaintext
75 lines
1.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# KVM configuration
|
|
#
|
|
|
|
source "virt/lib/Kconfig"
|
|
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
|
|
|
|
menuconfig KVM
|
|
bool "Kernel-based Virtual Machine (KVM) support"
|
|
depends on HAVE_KVM
|
|
select KVM_GENERIC_HARDWARE_ENABLING
|
|
select MMU_NOTIFIER
|
|
select PREEMPT_NOTIFIERS
|
|
select HAVE_KVM_CPU_RELAX_INTERCEPT
|
|
select KVM_MMIO
|
|
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
|
select KVM_XFER_TO_GUEST_WORK
|
|
select KVM_VFIO
|
|
select HAVE_KVM_EVENTFD
|
|
select HAVE_KVM_IRQFD
|
|
select HAVE_KVM_DIRTY_RING_ACQ_REL
|
|
select NEED_KVM_DIRTY_RING_WITH_BITMAP
|
|
select HAVE_KVM_MSI
|
|
select HAVE_KVM_IRQCHIP
|
|
select HAVE_KVM_IRQ_ROUTING
|
|
select IRQ_BYPASS_MANAGER
|
|
select HAVE_KVM_IRQ_BYPASS
|
|
select HAVE_KVM_VCPU_RUN_PID_CHANGE
|
|
select SCHED_INFO
|
|
select GUEST_PERF_EVENTS if PERF_EVENTS
|
|
select INTERVAL_TREE
|
|
select XARRAY_MULTI
|
|
help
|
|
Support hosting virtualized guest machines.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVHE_EL2_DEBUG
|
|
bool "Debug mode for non-VHE EL2 object"
|
|
depends on KVM
|
|
help
|
|
Say Y here to enable the debug mode for the non-VHE KVM EL2 object.
|
|
Failure reports will BUG() in the hypervisor. This is intended for
|
|
local EL2 hypervisor development.
|
|
|
|
If unsure, say N.
|
|
|
|
config PROTECTED_NVHE_STACKTRACE
|
|
bool "Protected KVM hypervisor stacktraces"
|
|
depends on NVHE_EL2_DEBUG
|
|
default n
|
|
help
|
|
Say Y here to enable pKVM hypervisor stacktraces on hyp_panic()
|
|
|
|
If using protected nVHE mode, but cannot afford the associated
|
|
memory cost (less than 0.75 page per CPU) of pKVM stacktraces,
|
|
say N.
|
|
|
|
If unsure, or not using protected nVHE (pKVM), say N.
|
|
|
|
endif # VIRTUALIZATION
|