diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-13 12:47:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-13 12:47:01 -0400 |
commit | 900360131066f192c82311a098d03d6ac6429e20 (patch) | |
tree | e9681537a2d1f75fa5be21d8f1116f9f0ba8a391 /include/uapi | |
parent | 4541fec3104bef0c60633f9e180be94ea5ccc2b7 (diff) | |
parent | ca3f0874723fad81d0c701b63ae3a17a408d5f25 (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM updates from Paolo Bonzini:
"First batch of KVM changes for 4.1
The most interesting bit here is irqfd/ioeventfd support for ARM and
ARM64.
Summary:
ARM/ARM64:
fixes for live migration, irqfd and ioeventfd support (enabling
vhost, too), page aging
s390:
interrupt handling rework, allowing to inject all local interrupts
via new ioctl and to get/set the full local irq state for migration
and introspection. New ioctls to access memory by virtual address,
and to get/set the guest storage keys. SIMD support.
MIPS:
FPU and MIPS SIMD Architecture (MSA) support. Includes some
patches from Ralf Baechle's MIPS tree.
x86:
bugfixes (notably for pvclock, the others are small) and cleanups.
Another small latency improvement for the TSC deadline timer"
* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (146 commits)
KVM: use slowpath for cross page cached accesses
kvm: mmu: lazy collapse small sptes into large sptes
KVM: x86: Clear CR2 on VCPU reset
KVM: x86: DR0-DR3 are not clear on reset
KVM: x86: BSP in MSR_IA32_APICBASE is writable
KVM: x86: simplify kvm_apic_map
KVM: x86: avoid logical_map when it is invalid
KVM: x86: fix mixed APIC mode broadcast
KVM: x86: use MDA for interrupt matching
kvm/ppc/mpic: drop unused IRQ_testbit
KVM: nVMX: remove unnecessary double caching of MAXPHYADDR
KVM: nVMX: checks for address bits beyond MAXPHYADDR on VM-entry
KVM: x86: cache maxphyaddr CPUID leaf in struct kvm_vcpu
KVM: vmx: pass error code with internal error #2
x86: vdso: fix pvclock races with task migration
KVM: remove kvm_read_hva and kvm_read_hva_atomic
KVM: x86: optimize delivery of TSC deadline timer interrupt
KVM: x86: extract blocking logic from __vcpu_run
kvm: x86: fix x86 eflags fixed bit
KVM: s390: migrate vcpu interrupt state
...
Diffstat (limited to 'include/uapi')
-rw-r--r-- | include/uapi/linux/kvm.h | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 805570650062..f574d7be7631 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
@@ -147,6 +147,16 @@ struct kvm_pit_config { | |||
147 | 147 | ||
148 | #define KVM_PIT_SPEAKER_DUMMY 1 | 148 | #define KVM_PIT_SPEAKER_DUMMY 1 |
149 | 149 | ||
150 | struct kvm_s390_skeys { | ||
151 | __u64 start_gfn; | ||
152 | __u64 count; | ||
153 | __u64 skeydata_addr; | ||
154 | __u32 flags; | ||
155 | __u32 reserved[9]; | ||
156 | }; | ||
157 | #define KVM_S390_GET_SKEYS_NONE 1 | ||
158 | #define KVM_S390_SKEYS_MAX 1048576 | ||
159 | |||
150 | #define KVM_EXIT_UNKNOWN 0 | 160 | #define KVM_EXIT_UNKNOWN 0 |
151 | #define KVM_EXIT_EXCEPTION 1 | 161 | #define KVM_EXIT_EXCEPTION 1 |
152 | #define KVM_EXIT_IO 2 | 162 | #define KVM_EXIT_IO 2 |
@@ -172,6 +182,7 @@ struct kvm_pit_config { | |||
172 | #define KVM_EXIT_S390_TSCH 22 | 182 | #define KVM_EXIT_S390_TSCH 22 |
173 | #define KVM_EXIT_EPR 23 | 183 | #define KVM_EXIT_EPR 23 |
174 | #define KVM_EXIT_SYSTEM_EVENT 24 | 184 | #define KVM_EXIT_SYSTEM_EVENT 24 |
185 | #define KVM_EXIT_S390_STSI 25 | ||
175 | 186 | ||
176 | /* For KVM_EXIT_INTERNAL_ERROR */ | 187 | /* For KVM_EXIT_INTERNAL_ERROR */ |
177 | /* Emulate instruction failed. */ | 188 | /* Emulate instruction failed. */ |
@@ -309,6 +320,15 @@ struct kvm_run { | |||
309 | __u32 type; | 320 | __u32 type; |
310 | __u64 flags; | 321 | __u64 flags; |
311 | } system_event; | 322 | } system_event; |
323 | /* KVM_EXIT_S390_STSI */ | ||
324 | struct { | ||
325 | __u64 addr; | ||
326 | __u8 ar; | ||
327 | __u8 reserved; | ||
328 | __u8 fc; | ||
329 | __u8 sel1; | ||
330 | __u16 sel2; | ||
331 | } s390_stsi; | ||
312 | /* Fix the size of the union. */ | 332 | /* Fix the size of the union. */ |
313 | char padding[256]; | 333 | char padding[256]; |
314 | }; | 334 | }; |
@@ -324,7 +344,7 @@ struct kvm_run { | |||
324 | __u64 kvm_dirty_regs; | 344 | __u64 kvm_dirty_regs; |
325 | union { | 345 | union { |
326 | struct kvm_sync_regs regs; | 346 | struct kvm_sync_regs regs; |
327 | char padding[1024]; | 347 | char padding[2048]; |
328 | } s; | 348 | } s; |
329 | }; | 349 | }; |
330 | 350 | ||
@@ -365,6 +385,24 @@ struct kvm_translation { | |||
365 | __u8 pad[5]; | 385 | __u8 pad[5]; |
366 | }; | 386 | }; |
367 | 387 | ||
388 | /* for KVM_S390_MEM_OP */ | ||
389 | struct kvm_s390_mem_op { | ||
390 | /* in */ | ||
391 | __u64 gaddr; /* the guest address */ | ||
392 | __u64 flags; /* flags */ | ||
393 | __u32 size; /* amount of bytes */ | ||
394 | __u32 op; /* type of operation */ | ||
395 | __u64 buf; /* buffer in userspace */ | ||
396 | __u8 ar; /* the access register number */ | ||
397 | __u8 reserved[31]; /* should be set to 0 */ | ||
398 | }; | ||
399 | /* types for kvm_s390_mem_op->op */ | ||
400 | #define KVM_S390_MEMOP_LOGICAL_READ 0 | ||
401 | #define KVM_S390_MEMOP_LOGICAL_WRITE 1 | ||
402 | /* flags for kvm_s390_mem_op->flags */ | ||
403 | #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0) | ||
404 | #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1) | ||
405 | |||
368 | /* for KVM_INTERRUPT */ | 406 | /* for KVM_INTERRUPT */ |
369 | struct kvm_interrupt { | 407 | struct kvm_interrupt { |
370 | /* in */ | 408 | /* in */ |
@@ -520,6 +558,13 @@ struct kvm_s390_irq { | |||
520 | } u; | 558 | } u; |
521 | }; | 559 | }; |
522 | 560 | ||
561 | struct kvm_s390_irq_state { | ||
562 | __u64 buf; | ||
563 | __u32 flags; | ||
564 | __u32 len; | ||
565 | __u32 reserved[4]; | ||
566 | }; | ||
567 | |||
523 | /* for KVM_SET_GUEST_DEBUG */ | 568 | /* for KVM_SET_GUEST_DEBUG */ |
524 | 569 | ||
525 | #define KVM_GUESTDBG_ENABLE 0x00000001 | 570 | #define KVM_GUESTDBG_ENABLE 0x00000001 |
@@ -760,6 +805,14 @@ struct kvm_ppc_smmu_info { | |||
760 | #define KVM_CAP_PPC_ENABLE_HCALL 104 | 805 | #define KVM_CAP_PPC_ENABLE_HCALL 104 |
761 | #define KVM_CAP_CHECK_EXTENSION_VM 105 | 806 | #define KVM_CAP_CHECK_EXTENSION_VM 105 |
762 | #define KVM_CAP_S390_USER_SIGP 106 | 807 | #define KVM_CAP_S390_USER_SIGP 106 |
808 | #define KVM_CAP_S390_VECTOR_REGISTERS 107 | ||
809 | #define KVM_CAP_S390_MEM_OP 108 | ||
810 | #define KVM_CAP_S390_USER_STSI 109 | ||
811 | #define KVM_CAP_S390_SKEYS 110 | ||
812 | #define KVM_CAP_MIPS_FPU 111 | ||
813 | #define KVM_CAP_MIPS_MSA 112 | ||
814 | #define KVM_CAP_S390_INJECT_IRQ 113 | ||
815 | #define KVM_CAP_S390_IRQ_STATE 114 | ||
763 | 816 | ||
764 | #ifdef KVM_CAP_IRQ_ROUTING | 817 | #ifdef KVM_CAP_IRQ_ROUTING |
765 | 818 | ||
@@ -1135,6 +1188,16 @@ struct kvm_s390_ucas_mapping { | |||
1135 | #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init) | 1188 | #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init) |
1136 | #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init) | 1189 | #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init) |
1137 | #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list) | 1190 | #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list) |
1191 | /* Available with KVM_CAP_S390_MEM_OP */ | ||
1192 | #define KVM_S390_MEM_OP _IOW(KVMIO, 0xb1, struct kvm_s390_mem_op) | ||
1193 | /* Available with KVM_CAP_S390_SKEYS */ | ||
1194 | #define KVM_S390_GET_SKEYS _IOW(KVMIO, 0xb2, struct kvm_s390_skeys) | ||
1195 | #define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys) | ||
1196 | /* Available with KVM_CAP_S390_INJECT_IRQ */ | ||
1197 | #define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq) | ||
1198 | /* Available with KVM_CAP_S390_IRQ_STATE */ | ||
1199 | #define KVM_S390_SET_IRQ_STATE _IOW(KVMIO, 0xb5, struct kvm_s390_irq_state) | ||
1200 | #define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct kvm_s390_irq_state) | ||
1138 | 1201 | ||
1139 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) | 1202 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) |
1140 | #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) | 1203 | #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) |