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/linux | |
| 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/linux')
| -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) |
