aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/virtual/kvm/api.txt27
-rw-r--r--Documentation/virtual/kvm/devices/arm-vgic-v3.txt30
-rw-r--r--Documentation/virtual/kvm/mmu.txt6
-rw-r--r--Documentation/virtual/kvm/nested-vmx.txt11
-rw-r--r--arch/arm/include/asm/kvm_host.h14
-rw-r--r--arch/arm/include/uapi/asm/kvm.h1
-rw-r--r--arch/arm64/Kconfig7
-rw-r--r--arch/arm64/include/asm/cpufeature.h29
-rw-r--r--arch/arm64/include/asm/fpsimd.h21
-rw-r--r--arch/arm64/include/asm/kvm_asm.h8
-rw-r--r--arch/arm64/include/asm/kvm_host.h49
-rw-r--r--arch/arm64/include/asm/processor.h15
-rw-r--r--arch/arm64/include/asm/thread_info.h13
-rw-r--r--arch/arm64/include/uapi/asm/kvm.h1
-rw-r--r--arch/arm64/kernel/fpsimd.c177
-rw-r--r--arch/arm64/kernel/ptrace.c1
-rw-r--r--arch/arm64/kvm/Kconfig1
-rw-r--r--arch/arm64/kvm/Makefile2
-rw-r--r--arch/arm64/kvm/debug.c8
-rw-r--r--arch/arm64/kvm/fpsimd.c110
-rw-r--r--arch/arm64/kvm/hyp/debug-sr.c6
-rw-r--r--arch/arm64/kvm/hyp/entry.S43
-rw-r--r--arch/arm64/kvm/hyp/hyp-entry.S19
-rw-r--r--arch/arm64/kvm/hyp/switch.c124
-rw-r--r--arch/arm64/kvm/hyp/sysreg-sr.c4
-rw-r--r--arch/arm64/kvm/sys_regs.c9
-rw-r--r--arch/mips/kvm/mips.c2
-rw-r--r--arch/powerpc/kvm/book3s_hv.c3
-rw-r--r--arch/powerpc/kvm/powerpc.c2
-rw-r--r--arch/s390/include/asm/ctl_reg.h12
-rw-r--r--arch/s390/include/asm/kvm_host.h1
-rw-r--r--arch/s390/include/asm/mmu.h2
-rw-r--r--arch/s390/include/asm/mmu_context.h2
-rw-r--r--arch/s390/include/asm/pgtable.h4
-rw-r--r--arch/s390/kvm/guestdbg.c2
-rw-r--r--arch/s390/kvm/interrupt.c20
-rw-r--r--arch/s390/kvm/kvm-s390.c61
-rw-r--r--arch/s390/kvm/kvm-s390.h13
-rw-r--r--arch/s390/kvm/priv.c28
-rw-r--r--arch/s390/kvm/vsie.c10
-rw-r--r--arch/s390/mm/gmap.c6
-rw-r--r--arch/s390/mm/pgtable.c4
-rw-r--r--arch/x86/hyperv/mmu.c28
-rw-r--r--arch/x86/include/asm/hyperv-tlfs.h25
-rw-r--r--arch/x86/include/asm/kvm_emulate.h6
-rw-r--r--arch/x86/include/asm/kvm_host.h7
-rw-r--r--arch/x86/include/asm/mshyperv.h2
-rw-r--r--arch/x86/include/asm/vmx.h2
-rw-r--r--arch/x86/kvm/cpuid.c3
-rw-r--r--arch/x86/kvm/emulate.c76
-rw-r--r--arch/x86/kvm/hyperv.c171
-rw-r--r--arch/x86/kvm/lapic.c12
-rw-r--r--arch/x86/kvm/lapic.h14
-rw-r--r--arch/x86/kvm/mmu.c78
-rw-r--r--arch/x86/kvm/svm.c16
-rw-r--r--arch/x86/kvm/trace.h51
-rw-r--r--arch/x86/kvm/vmx.c489
-rw-r--r--arch/x86/kvm/x86.c97
-rw-r--r--arch/x86/kvm/x86.h4
-rw-r--r--include/kvm/arm_vgic.h17
-rw-r--r--include/linux/kvm_host.h19
-rw-r--r--include/linux/sched.h6
-rw-r--r--include/linux/thread_info.h11
-rw-r--r--include/uapi/linux/kvm.h5
-rw-r--r--tools/include/uapi/linux/kvm.h4
-rw-r--r--virt/kvm/Kconfig3
-rw-r--r--virt/kvm/arm/arm.c32
-rw-r--r--virt/kvm/arm/vgic/vgic-debug.c17
-rw-r--r--virt/kvm/arm/vgic/vgic-init.c100
-rw-r--r--virt/kvm/arm/vgic/vgic-kvm-device.c53
-rw-r--r--virt/kvm/arm/vgic/vgic-mmio-v3.c112
-rw-r--r--virt/kvm/arm/vgic/vgic-v3.c99
-rw-r--r--virt/kvm/arm/vgic/vgic.h46
-rw-r--r--virt/kvm/kvm_main.c83
74 files changed, 1827 insertions, 769 deletions
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 758bf403a169..495b7742ab58 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1269,12 +1269,18 @@ struct kvm_cpuid_entry2 {
1269 __u32 padding[3]; 1269 __u32 padding[3];
1270}; 1270};
1271 1271
1272This ioctl returns x86 cpuid features which are supported by both the hardware 1272This ioctl returns x86 cpuid features which are supported by both the
1273and kvm. Userspace can use the information returned by this ioctl to 1273hardware and kvm in its default configuration. Userspace can use the
1274construct cpuid information (for KVM_SET_CPUID2) that is consistent with 1274information returned by this ioctl to construct cpuid information (for
1275hardware, kernel, and userspace capabilities, and with user requirements (for 1275KVM_SET_CPUID2) that is consistent with hardware, kernel, and
1276example, the user may wish to constrain cpuid to emulate older hardware, 1276userspace capabilities, and with user requirements (for example, the
1277or for feature consistency across a cluster). 1277user may wish to constrain cpuid to emulate older hardware, or for
1278feature consistency across a cluster).
1279
1280Note that certain capabilities, such as KVM_CAP_X86_DISABLE_EXITS, may
1281expose cpuid features (e.g. MONITOR) which are not supported by kvm in
1282its default configuration. If userspace enables such capabilities, it
1283is responsible for modifying the results of this ioctl appropriately.
1278 1284
1279Userspace invokes KVM_GET_SUPPORTED_CPUID by passing a kvm_cpuid2 structure 1285Userspace invokes KVM_GET_SUPPORTED_CPUID by passing a kvm_cpuid2 structure
1280with the 'nent' field indicating the number of entries in the variable-size 1286with the 'nent' field indicating the number of entries in the variable-size
@@ -4603,3 +4609,12 @@ Architectures: s390
4603This capability indicates that kvm will implement the interfaces to handle 4609This capability indicates that kvm will implement the interfaces to handle
4604reset, migration and nested KVM for branch prediction blocking. The stfle 4610reset, migration and nested KVM for branch prediction blocking. The stfle
4605facility 82 should not be provided to the guest without this capability. 4611facility 82 should not be provided to the guest without this capability.
4612
46138.14 KVM_CAP_HYPERV_TLBFLUSH
4614
4615Architectures: x86
4616
4617This capability indicates that KVM supports paravirtualized Hyper-V TLB Flush
4618hypercalls:
4619HvFlushVirtualAddressSpace, HvFlushVirtualAddressSpaceEx,
4620HvFlushVirtualAddressList, HvFlushVirtualAddressListEx.
diff --git a/Documentation/virtual/kvm/devices/arm-vgic-v3.txt b/Documentation/virtual/kvm/devices/arm-vgic-v3.txt
index 9293b45abdb9..2408ab720ef7 100644
--- a/Documentation/virtual/kvm/devices/arm-vgic-v3.txt
+++ b/Documentation/virtual/kvm/devices/arm-vgic-v3.txt
@@ -27,16 +27,42 @@ Groups:
27 VCPU and all of the redistributor pages are contiguous. 27 VCPU and all of the redistributor pages are contiguous.
28 Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. 28 Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
29 This address needs to be 64K aligned. 29 This address needs to be 64K aligned.
30
31 KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION (rw, 64-bit)
32 The attribute data pointed to by kvm_device_attr.addr is a __u64 value:
33 bits: | 63 .... 52 | 51 .... 16 | 15 - 12 |11 - 0
34 values: | count | base | flags | index
35 - index encodes the unique redistributor region index
36 - flags: reserved for future use, currently 0
37 - base field encodes bits [51:16] of the guest physical base address
38 of the first redistributor in the region.
39 - count encodes the number of redistributors in the region. Must be
40 greater than 0.
41 There are two 64K pages for each redistributor in the region and
42 redistributors are laid out contiguously within the region. Regions
43 are filled with redistributors in the index order. The sum of all
44 region count fields must be greater than or equal to the number of
45 VCPUs. Redistributor regions must be registered in the incremental
46 index order, starting from index 0.
47 The characteristics of a specific redistributor region can be read
48 by presetting the index field in the attr data.
49 Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
50
51 It is invalid to mix calls with KVM_VGIC_V3_ADDR_TYPE_REDIST and
52 KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION attributes.
53
30 Errors: 54 Errors:
31 -E2BIG: Address outside of addressable IPA range 55 -E2BIG: Address outside of addressable IPA range
32 -EINVAL: Incorrectly aligned address 56 -EINVAL: Incorrectly aligned address, bad redistributor region
57 count/index, mixed redistributor region attribute usage
33 -EEXIST: Address already configured 58 -EEXIST: Address already configured
59 -ENOENT: Attempt to read the characteristics of a non existing
60 redistributor region
34 -ENXIO: The group or attribute is unknown/unsupported for this device 61 -ENXIO: The group or attribute is unknown/unsupported for this device
35 or hardware support is missing. 62 or hardware support is missing.
36 -EFAULT: Invalid user pointer for attr->addr. 63 -EFAULT: Invalid user pointer for attr->addr.
37 64
38 65</