]> git.ipfire.org Git - thirdparty/kernel/stable.git/blame - Documentation/virtual/kvm/api.txt
KVM: PPC: Book3S HV: Don't access HFSCR, LPIDR or LPCR when running nested
[thirdparty/kernel/stable.git] / Documentation / virtual / kvm / api.txt
CommitLineData
9c1b96e3
AK
1The Definitive KVM (Kernel-based Virtual Machine) API Documentation
2===================================================================
3
41. General description
414fa985 5----------------------
9c1b96e3
AK
6
7The kvm API is a set of ioctls that are issued to control various aspects
8of a virtual machine. The ioctls belong to three classes
9
10 - System ioctls: These query and set global attributes which affect the
11 whole kvm subsystem. In addition a system ioctl is used to create
12 virtual machines
13
14 - VM ioctls: These query and set attributes that affect an entire virtual
15 machine, for example memory layout. In addition a VM ioctl is used to
16 create virtual cpus (vcpus).
17
18 Only run VM ioctls from the same process (address space) that was used
19 to create the VM.
20
21 - vcpu ioctls: These query and set attributes that control the operation
22 of a single virtual cpu.
23
24 Only run vcpu ioctls from the same thread that was used to create the
25 vcpu.
26
414fa985 27
2044892d 282. File descriptors
414fa985 29-------------------
9c1b96e3
AK
30
31The kvm API is centered around file descriptors. An initial
32open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
33can be used to issue system ioctls. A KVM_CREATE_VM ioctl on this
2044892d 34handle will create a VM file descriptor which can be used to issue VM
9c1b96e3
AK
35ioctls. A KVM_CREATE_VCPU ioctl on a VM fd will create a virtual cpu
36and return a file descriptor pointing to it. Finally, ioctls on a vcpu
37fd can be used to control the vcpu, including the important task of
38actually running guest code.
39
40In general file descriptors can be migrated among processes by means
41of fork() and the SCM_RIGHTS facility of unix domain socket. These
42kinds of tricks are explicitly not supported by kvm. While they will
43not cause harm to the host, their actual behavior is not guaranteed by
44the API. The only supported use is one virtual machine per process,
45and one vcpu per thread.
46
414fa985 47
9c1b96e3 483. Extensions
414fa985 49-------------
9c1b96e3
AK
50
51As of Linux 2.6.22, the KVM ABI has been stabilized: no backward
52incompatible change are allowed. However, there is an extension
53facility that allows backward-compatible extensions to the API to be
54queried and used.
55
c9f3f2d8 56The extension mechanism is not based on the Linux version number.
9c1b96e3
AK
57Instead, kvm defines extension identifiers and a facility to query
58whether a particular extension identifier is available. If it is, a
59set of ioctls is available for application use.
60
414fa985 61
9c1b96e3 624. API description
414fa985 63------------------
9c1b96e3
AK
64
65This section describes ioctls that can be used to control kvm guests.
66For each ioctl, the following information is provided along with a
67description:
68
69 Capability: which KVM extension provides this ioctl. Can be 'basic',
70 which means that is will be provided by any kernel that supports
7f05db6a 71 API version 12 (see section 4.1), a KVM_CAP_xyz constant, which
9c1b96e3 72 means availability needs to be checked with KVM_CHECK_EXTENSION
7f05db6a
MT
73 (see section 4.4), or 'none' which means that while not all kernels
74 support this ioctl, there's no capability bit to check its
75 availability: for kernels that don't support the ioctl,
76 the ioctl returns -ENOTTY.
9c1b96e3
AK
77
78 Architectures: which instruction set architectures provide this ioctl.
79 x86 includes both i386 and x86_64.
80
81 Type: system, vm, or vcpu.
82
83 Parameters: what parameters are accepted by the ioctl.
84
85 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
86 are not detailed, but errors with specific meanings are.
87
414fa985 88
9c1b96e3
AK
894.1 KVM_GET_API_VERSION
90
91Capability: basic
92Architectures: all
93Type: system ioctl
94Parameters: none
95Returns: the constant KVM_API_VERSION (=12)
96
97This identifies the API version as the stable kvm API. It is not
98expected that this number will change. However, Linux 2.6.20 and
992.6.21 report earlier versions; these are not documented and not
100supported. Applications should refuse to run if KVM_GET_API_VERSION
101returns a value other than 12. If this check passes, all ioctls
102described as 'basic' will be available.
103
414fa985 104
9c1b96e3
AK
1054.2 KVM_CREATE_VM
106
107Capability: basic
108Architectures: all
109Type: system ioctl
e08b9637 110Parameters: machine type identifier (KVM_VM_*)
9c1b96e3
AK
111Returns: a VM fd that can be used to control the new virtual machine.
112
bcb85c88 113The new VM has no virtual cpus and no memory.
a8a3c426 114You probably want to use 0 as machine type.
e08b9637
CO
115
116In order to create user controlled virtual machines on S390, check
117KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as
118privileged user (CAP_SYS_ADMIN).
9c1b96e3 119
a8a3c426
JH
120To use hardware assisted virtualization on MIPS (VZ ASE) rather than
121the default trap & emulate implementation (which changes the virtual
122memory layout to fit in user mode), check KVM_CAP_MIPS_VZ and use the
123flag KVM_VM_MIPS_VZ.
124
414fa985 125
801e459a 1264.3 KVM_GET_MSR_INDEX_LIST, KVM_GET_MSR_FEATURE_INDEX_LIST
9c1b96e3 127
801e459a 128Capability: basic, KVM_CAP_GET_MSR_FEATURES for KVM_GET_MSR_FEATURE_INDEX_LIST
9c1b96e3 129Architectures: x86
801e459a 130Type: system ioctl
9c1b96e3
AK
131Parameters: struct kvm_msr_list (in/out)
132Returns: 0 on success; -1 on error
133Errors:
801e459a 134 EFAULT: the msr index list cannot be read from or written to
9c1b96e3
AK
135 E2BIG: the msr index list is to be to fit in the array specified by
136 the user.
137
138struct kvm_msr_list {
139 __u32 nmsrs; /* number of msrs in entries */
140 __u32 indices[0];
141};
142
801e459a
TL
143The user fills in the size of the indices array in nmsrs, and in return
144kvm adjusts nmsrs to reflect the actual number of msrs and fills in the
145indices array with their numbers.
146
147KVM_GET_MSR_INDEX_LIST returns the guest msrs that are supported. The list
148varies by kvm version and host processor, but does not change otherwise.
9c1b96e3 149
2e2602ca
AK
150Note: if kvm indicates supports MCE (KVM_CAP_MCE), then the MCE bank MSRs are
151not returned in the MSR list, as different vcpus can have a different number
152of banks, as set via the KVM_X86_SETUP_MCE ioctl.
153
801e459a
TL
154KVM_GET_MSR_FEATURE_INDEX_LIST returns the list of MSRs that can be passed
155to the KVM_GET_MSRS system ioctl. This lets userspace probe host capabilities
156and processor features that are exposed via MSRs (e.g., VMX capabilities).
157This list also varies by kvm version and host processor, but does not change
158otherwise.
159
414fa985 160
9c1b96e3
AK
1614.4 KVM_CHECK_EXTENSION
162
92b591a4 163Capability: basic, KVM_CAP_CHECK_EXTENSION_VM for vm ioctl
9c1b96e3 164Architectures: all
92b591a4 165Type: system ioctl, vm ioctl
9c1b96e3
AK
166Parameters: extension identifier (KVM_CAP_*)
167Returns: 0 if unsupported; 1 (or some other positive integer) if supported
168
169The API allows the application to query about extensions to the core
170kvm API. Userspace passes an extension identifier (an integer) and
171receives an integer that describes the extension availability.
172Generally 0 means no and 1 means yes, but some extensions may report
173additional information in the integer return value.
174
92b591a4
AG
175Based on their initialization different VMs may have different capabilities.
176It is thus encouraged to use the vm ioctl to query for capabilities (available
177with KVM_CAP_CHECK_EXTENSION_VM on the vm fd)
414fa985 178
9c1b96e3
AK
1794.5 KVM_GET_VCPU_MMAP_SIZE
180
181Capability: basic
182Architectures: all
183Type: system ioctl
184Parameters: none
185Returns: size of vcpu mmap area, in bytes
186
187The KVM_RUN ioctl (cf.) communicates with userspace via a shared
188memory region. This ioctl returns the size of that region. See the
189KVM_RUN documentation for details.
190
414fa985 191
9c1b96e3
AK
1924.6 KVM_SET_MEMORY_REGION
193
194Capability: basic
195Architectures: all
196Type: vm ioctl
197Parameters: struct kvm_memory_region (in)
198Returns: 0 on success, -1 on error
199
b74a07be 200This ioctl is obsolete and has been removed.
9c1b96e3 201
414fa985 202
68ba6974 2034.7 KVM_CREATE_VCPU
9c1b96e3
AK
204
205Capability: basic
206Architectures: all
207Type: vm ioctl
208Parameters: vcpu id (apic id on x86)
209Returns: vcpu fd on success, -1 on error
210
0b1b1dfd
GK
211This API adds a vcpu to a virtual machine. No more than max_vcpus may be added.
212The vcpu id is an integer in the range [0, max_vcpu_id).
8c3ba334
SL
213
214The recommended max_vcpus value can be retrieved using the KVM_CAP_NR_VCPUS of
215the KVM_CHECK_EXTENSION ioctl() at run-time.
216The maximum possible value for max_vcpus can be retrieved using the
217KVM_CAP_MAX_VCPUS of the KVM_CHECK_EXTENSION ioctl() at run-time.
218
76d25402
PE
219If the KVM_CAP_NR_VCPUS does not exist, you should assume that max_vcpus is 4
220cpus max.
8c3ba334
SL
221If the KVM_CAP_MAX_VCPUS does not exist, you should assume that max_vcpus is
222same as the value returned from KVM_CAP_NR_VCPUS.
9c1b96e3 223
0b1b1dfd
GK
224The maximum possible value for max_vcpu_id can be retrieved using the
225KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
226
227If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that max_vcpu_id
228is the same as the value returned from KVM_CAP_MAX_VCPUS.
229
371fefd6
PM
230On powerpc using book3s_hv mode, the vcpus are mapped onto virtual
231threads in one or more virtual CPU cores. (This is because the
232hardware requires all the hardware threads in a CPU core to be in the
233same partition.) The KVM_CAP_PPC_SMT capability indicates the number
36442687
AK
234of vcpus per virtual core (vcore). The vcore id is obtained by
235dividing the vcpu id by the number of vcpus per vcore. The vcpus in a
236given vcore will always be in the same physical core as each other
237(though that might be a different physical core from time to time).
238Userspace can control the threading (SMT) mode of the guest by its
239allocation of vcpu ids. For example, if userspace wants
240single-threaded guest vcpus, it should make all vcpu ids be a multiple
241of the number of vcpus per vcore.
242
5b1c1493
CO
243For virtual cpus that have been created with S390 user controlled virtual
244machines, the resulting vcpu fd can be memory mapped at page offset
245KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual
246cpu's hardware control block.
247
414fa985 248
68ba6974 2494.8 KVM_GET_DIRTY_LOG (vm ioctl)
9c1b96e3
AK
250
251Capability: basic
252Architectures: x86
253Type: vm ioctl
254Parameters: struct kvm_dirty_log (in/out)
255Returns: 0 on success, -1 on error
256
257/* for KVM_GET_DIRTY_LOG */
258struct kvm_dirty_log {
259 __u32 slot;
260 __u32 padding;
261 union {
262 void __user *dirty_bitmap; /* one bit per page */
263 __u64 padding;
264 };
265};
266
267Given a memory slot, return a bitmap containing any pages dirtied
268since the last call to this ioctl. Bit 0 is the first page in the
269memory slot. Ensure the entire structure is cleared to avoid padding
270issues.
271
f481b069
PB
272If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 specifies
273the address space for which you want to return the dirty bitmap.
274They must be less than the value that KVM_CHECK_EXTENSION returns for
275the KVM_CAP_MULTI_ADDRESS_SPACE capability.
276
414fa985 277
68ba6974 2784.9 KVM_SET_MEMORY_ALIAS
9c1b96e3
AK
279
280Capability: basic
281Architectures: x86
282Type: vm ioctl
283Parameters: struct kvm_memory_alias (in)
284Returns: 0 (success), -1 (error)
285
a1f4d395 286This ioctl is obsolete and has been removed.
9c1b96e3 287
414fa985 288
68ba6974 2894.10 KVM_RUN
9c1b96e3
AK
290
291Capability: basic
292Architectures: all
293Type: vcpu ioctl
294Parameters: none
295Returns: 0 on success, -1 on error
296Errors:
297 EINTR: an unmasked signal is pending
298
299This ioctl is used to run a guest virtual cpu. While there are no
300explicit parameters, there is an implicit parameter block that can be
301obtained by mmap()ing the vcpu fd at offset 0, with the size given by
302KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct
303kvm_run' (see below).
304
414fa985 305
68ba6974 3064.11 KVM_GET_REGS
9c1b96e3
AK
307
308Capability: basic
379e04c7 309Architectures: all except ARM, arm64
9c1b96e3
AK
310Type: vcpu ioctl
311Parameters: struct kvm_regs (out)
312Returns: 0 on success, -1 on error
313
314Reads the general purpose registers from the vcpu.
315
316/* x86 */
317struct kvm_regs {
318 /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
319 __u64 rax, rbx, rcx, rdx;
320 __u64 rsi, rdi, rsp, rbp;
321 __u64 r8, r9, r10, r11;
322 __u64 r12, r13, r14, r15;
323 __u64 rip, rflags;
324};
325
c2d2c21b
JH
326/* mips */
327struct kvm_regs {
328 /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
329 __u64 gpr[32];
330 __u64 hi;
331 __u64 lo;
332 __u64 pc;
333};
334
414fa985 335
68ba6974 3364.12 KVM_SET_REGS
9c1b96e3
AK
337
338Capability: basic
379e04c7 339Architectures: all except ARM, arm64
9c1b96e3
AK
340Type: vcpu ioctl
341Parameters: struct kvm_regs (in)
342Returns: 0 on success, -1 on error
343
344Writes the general purpose registers into the vcpu.
345
346See KVM_GET_REGS for the data structure.
347
414fa985 348
68ba6974 3494.13 KVM_GET_SREGS
9c1b96e3
AK
350
351Capability: basic
5ce941ee 352Architectures: x86, ppc
9c1b96e3
AK
353Type: vcpu ioctl
354Parameters: struct kvm_sregs (out)
355Returns: 0 on success, -1 on error
356
357Reads special registers from the vcpu.
358
359/* x86 */
360struct kvm_sregs {
361 struct kvm_segment cs, ds, es, fs, gs, ss;
362 struct kvm_segment tr, ldt;
363 struct kvm_dtable gdt, idt;
364 __u64 cr0, cr2, cr3, cr4, cr8;
365 __u64 efer;
366 __u64 apic_base;
367 __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
368};
369
68e2ffed 370/* ppc -- see arch/powerpc/include/uapi/asm/kvm.h */
5ce941ee 371
9c1b96e3
AK
372interrupt_bitmap is a bitmap of pending external interrupts. At most
373one bit may be set. This interrupt has been acknowledged by the APIC
374but not yet injected into the cpu core.
375
414fa985 376
68ba6974 3774.14 KVM_SET_SREGS
9c1b96e3
AK
378
379Capability: basic
5ce941ee 380Architectures: x86, ppc
9c1b96e3
AK
381Type: vcpu ioctl
382Parameters: struct kvm_sregs (in)
383Returns: 0 on success, -1 on error
384
385Writes special registers into the vcpu. See KVM_GET_SREGS for the
386data structures.
387
414fa985 388
68ba6974 3894.15 KVM_TRANSLATE
9c1b96e3
AK
390
391Capability: basic
392Architectures: x86
393Type: vcpu ioctl
394Parameters: struct kvm_translation (in/out)
395Returns: 0 on success, -1 on error
396
397Translates a virtual address according to the vcpu's current address
398translation mode.
399
400struct kvm_translation {
401 /* in */
402 __u64 linear_address;
403
404 /* out */
405 __u64 physical_address;
406 __u8 valid;
407 __u8 writeable;
408 __u8 usermode;
409 __u8 pad[5];
410};
411
414fa985 412
68ba6974 4134.16 KVM_INTERRUPT
9c1b96e3
AK
414
415Capability: basic
c2d2c21b 416Architectures: x86, ppc, mips
9c1b96e3
AK
417Type: vcpu ioctl
418Parameters: struct kvm_interrupt (in)
1c1a9ce9 419Returns: 0 on success, negative on failure.
9c1b96e3 420
1c1a9ce9 421Queues a hardware interrupt vector to be injected.
9c1b96e3
AK
422
423/* for KVM_INTERRUPT */
424struct kvm_interrupt {
425 /* in */
426 __u32 irq;
427};
428
6f7a2bd4
AG
429X86:
430
1c1a9ce9
SR
431Returns: 0 on success,
432 -EEXIST if an interrupt is already enqueued
433 -EINVAL the the irq number is invalid
434 -ENXIO if the PIC is in the kernel
435 -EFAULT if the pointer is invalid
436
437Note 'irq' is an interrupt vector, not an interrupt pin or line. This
438ioctl is useful if the in-kernel PIC is not used.
9c1b96e3 439
6f7a2bd4
AG
440PPC:
441
442Queues an external interrupt to be injected. This ioctl is overleaded
443with 3 different irq values:
444
445a) KVM_INTERRUPT_SET
446
447 This injects an edge type external interrupt into the guest once it's ready
448 to receive interrupts. When injected, the interrupt is done.
449
450b) KVM_INTERRUPT_UNSET
451
452 This unsets any pending interrupt.
453
454 Only available with KVM_CAP_PPC_UNSET_IRQ.
455
456c) KVM_INTERRUPT_SET_LEVEL
457
458 This injects a level type external interrupt into the guest context. The
459 interrupt stays pending until a specific ioctl with KVM_INTERRUPT_UNSET
460 is triggered.
461
462 Only available with KVM_CAP_PPC_IRQ_LEVEL.
463
464Note that any value for 'irq' other than the ones stated above is invalid
465and incurs unexpected behavior.
466
c2d2c21b
JH
467MIPS:
468
469Queues an external interrupt to be injected into the virtual CPU. A negative
470interrupt number dequeues the interrupt.
471
414fa985 472
68ba6974 4734.17 KVM_DEBUG_GUEST
9c1b96e3
AK
474
475Capability: basic
476Architectures: none
477Type: vcpu ioctl
478Parameters: none)
479Returns: -1 on error
480
481Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead.
482
414fa985 483
68ba6974 4844.18 KVM_GET_MSRS
9c1b96e3 485
801e459a 486Capability: basic (vcpu), KVM_CAP_GET_MSR_FEATURES (system)
9c1b96e3 487Architectures: x86
801e459a 488Type: system ioctl, vcpu ioctl
9c1b96e3 489Parameters: struct kvm_msrs (in/out)
801e459a
TL
490Returns: number of msrs successfully returned;
491 -1 on error
492
493When used as a system ioctl:
494Reads the values of MSR-based features that are available for the VM. This
495is similar to KVM_GET_SUPPORTED_CPUID, but it returns MSR indices and values.
496The list of msr-based features can be obtained using KVM_GET_MSR_FEATURE_INDEX_LIST
497in a system ioctl.
9c1b96e3 498
801e459a 499When used as a vcpu ioctl:
9c1b96e3 500Reads model-specific registers from the vcpu. Supported msr indices can
801e459a 501be obtained using KVM_GET_MSR_INDEX_LIST in a system ioctl.
9c1b96e3
AK
502
503struct kvm_msrs {
504 __u32 nmsrs; /* number of msrs in entries */
505 __u32 pad;
506
507 struct kvm_msr_entry entries[0];
508};
509
510struct kvm_msr_entry {
511 __u32 index;
512 __u32 reserved;
513 __u64 data;
514};
515
516Application code should set the 'nmsrs' member (which indicates the
517size of the entries array) and the 'index' member of each array entry.
518kvm will fill in the 'data' member.
519
414fa985 520
68ba6974 5214.19 KVM_SET_MSRS
9c1b96e3
AK
522
523Capability: basic
524Architectures: x86
525Type: vcpu ioctl
526Parameters: struct kvm_msrs (in)
527Returns: 0 on success, -1 on error
528
529Writes model-specific registers to the vcpu. See KVM_GET_MSRS for the
530data structures.
531
532Application code should set the 'nmsrs' member (which indicates the
533size of the entries array), and the 'index' and 'data' members of each
534array entry.
535
414fa985 536
68ba6974 5374.20 KVM_SET_CPUID
9c1b96e3
AK
538
539Capability: basic
540Architectures: x86
541Type: vcpu ioctl
542Parameters: struct kvm_cpuid (in)
543Returns: 0 on success, -1 on error
544
545Defines the vcpu responses to the cpuid instruction. Applications
546should use the KVM_SET_CPUID2 ioctl if available.
547
548
549struct kvm_cpuid_entry {
550 __u32 function;
551 __u32 eax;
552 __u32 ebx;
553 __u32 ecx;
554 __u32 edx;
555 __u32 padding;
556};
557
558/* for KVM_SET_CPUID */
559struct kvm_cpuid {
560 __u32 nent;
561 __u32 padding;
562 struct kvm_cpuid_entry entries[0];
563};
564
414fa985 565
68ba6974 5664.21 KVM_SET_SIGNAL_MASK
9c1b96e3
AK
567
568Capability: basic
572e0929 569Architectures: all
9c1b96e3
AK
570Type: vcpu ioctl
571Parameters: struct kvm_signal_mask (in)
572Returns: 0 on success, -1 on error
573
574Defines which signals are blocked during execution of KVM_RUN. This
575signal mask temporarily overrides the threads signal mask. Any
576unblocked signal received (except SIGKILL and SIGSTOP, which retain
577their traditional behaviour) will cause KVM_RUN to return with -EINTR.
578
579Note the signal will only be delivered if not blocked by the original
580signal mask.
581
582/* for KVM_SET_SIGNAL_MASK */
583struct kvm_signal_mask {
584 __u32 len;
585 __u8 sigset[0];
586};
587
414fa985 588
68ba6974 5894.22 KVM_GET_FPU
9c1b96e3
AK
590
591Capability: basic
592Architectures: x86
593Type: vcpu ioctl
594Parameters: struct kvm_fpu (out)
595Returns: 0 on success, -1 on error
596
597Reads the floating point state from the vcpu.
598
599/* for KVM_GET_FPU and KVM_SET_FPU */
600struct kvm_fpu {
601 __u8 fpr[8][16];
602 __u16 fcw;
603 __u16 fsw;
604 __u8 ftwx; /* in fxsave format */
605 __u8 pad1;
606 __u16 last_opcode;
607 __u64 last_ip;
608 __u64 last_dp;
609 __u8 xmm[16][16];
610 __u32 mxcsr;
611 __u32 pad2;
612};
613
414fa985 614
68ba6974 6154.23 KVM_SET_FPU
9c1b96e3
AK
616
617Capability: basic
618Architectures: x86
619Type: vcpu ioctl
620Parameters: struct kvm_fpu (in)
621Returns: 0 on success, -1 on error
622
623Writes the floating point state to the vcpu.
624
625/* for KVM_GET_FPU and KVM_SET_FPU */
626struct kvm_fpu {
627 __u8 fpr[8][16];
628 __u16 fcw;
629 __u16 fsw;
630 __u8 ftwx; /* in fxsave format */
631 __u8 pad1;
632 __u16 last_opcode;
633 __u64 last_ip;
634 __u64 last_dp;
635 __u8 xmm[16][16];
636 __u32 mxcsr;
637 __u32 pad2;
638};
639
414fa985 640
68ba6974 6414.24 KVM_CREATE_IRQCHIP
5dadbfd6 642
84223598 643Capability: KVM_CAP_IRQCHIP, KVM_CAP_S390_IRQCHIP (s390)
c32a4272 644Architectures: x86, ARM, arm64, s390
5dadbfd6
AK
645Type: vm ioctl
646Parameters: none
647Returns: 0 on success, -1 on error
648
ac3d3735
AP
649Creates an interrupt controller model in the kernel.
650On x86, creates a virtual ioapic, a virtual PIC (two PICs, nested), and sets up
651future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both
652PIC and IOAPIC; GSI 16-23 only go to the IOAPIC.
653On ARM/arm64, a GICv2 is created. Any other GIC versions require the usage of
654KVM_CREATE_DEVICE, which also supports creating a GICv2. Using
655KVM_CREATE_DEVICE is preferred over KVM_CREATE_IRQCHIP for GICv2.
656On s390, a dummy irq routing table is created.
84223598
CH
657
658Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled
659before KVM_CREATE_IRQCHIP can be used.
5dadbfd6 660
414fa985 661
68ba6974 6624.25 KVM_IRQ_LINE
5dadbfd6
AK
663
664Capability: KVM_CAP_IRQCHIP
c32a4272 665Architectures: x86, arm, arm64
5dadbfd6
AK
666Type: vm ioctl
667Parameters: struct kvm_irq_level
668Returns: 0 on success, -1 on error
669
670Sets the level of a GSI input to the interrupt controller model in the kernel.
86ce8535
CD
671On some architectures it is required that an interrupt controller model has
672been previously created with KVM_CREATE_IRQCHIP. Note that edge-triggered
673interrupts require the level to be set to 1 and then back to 0.
674
100943c5
GS
675On real hardware, interrupt pins can be active-low or active-high. This
676does not matter for the level field of struct kvm_irq_level: 1 always
677means active (asserted), 0 means inactive (deasserted).
678
679x86 allows the operating system to program the interrupt polarity
680(active-low/active-high) for level-triggered interrupts, and KVM used
681to consider the polarity. However, due to bitrot in the handling of
682active-low interrupts, the above convention is now valid on x86 too.
683This is signaled by KVM_CAP_X86_IOAPIC_POLARITY_IGNORED. Userspace
684should not present interrupts to the guest as active-low unless this
685capability is present (or unless it is not using the in-kernel irqchip,
686of course).
687
688
379e04c7
MZ
689ARM/arm64 can signal an interrupt either at the CPU level, or at the
690in-kernel irqchip (GIC), and for in-kernel irqchip can tell the GIC to
691use PPIs designated for specific cpus. The irq field is interpreted
692like this:
86ce8535
CD
693
694  bits: | 31 ... 24 | 23 ... 16 | 15 ... 0 |
695 field: | irq_type | vcpu_index | irq_id |
696
697The irq_type field has the following values:
698- irq_type[0]: out-of-kernel GIC: irq_id 0 is IRQ, irq_id 1 is FIQ
699- irq_type[1]: in-kernel GIC: SPI, irq_id between 32 and 1019 (incl.)
700 (the vcpu_index field is ignored)
701- irq_type[2]: in-kernel GIC: PPI, irq_id between 16 and 31 (incl.)
702
703(The irq_id field thus corresponds nicely to the IRQ ID in the ARM GIC specs)
704
100943c5 705In both cases, level is used to assert/deassert the line.
5dadbfd6
AK
706
707struct kvm_irq_level {
708 union {
709 __u32 irq; /* GSI */
710 __s32 status; /* not used for KVM_IRQ_LEVEL */
711 };
712 __u32 level; /* 0 or 1 */
713};
714
414fa985 715
68ba6974 7164.26 KVM_GET_IRQCHIP
5dadbfd6
AK
717
718Capability: KVM_CAP_IRQCHIP
c32a4272 719Architectures: x86
5dadbfd6
AK
720Type: vm ioctl
721Parameters: struct kvm_irqchip (in/out)
722Returns: 0 on success, -1 on error
723
724Reads the state of a kernel interrupt controller created with
725KVM_CREATE_IRQCHIP into a buffer provided by the caller.
726
727struct kvm_irqchip {
728 __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
729 __u32 pad;
730 union {
731 char dummy[512]; /* reserving space */
732 struct kvm_pic_state pic;
733 struct kvm_ioapic_state ioapic;
734 } chip;
735};
736
414fa985 737
68ba6974 7384.27 KVM_SET_IRQCHIP
5dadbfd6
AK
739
740Capability: KVM_CAP_IRQCHIP
c32a4272 741Architectures: x86
5dadbfd6
AK
742Type: vm ioctl
743Parameters: struct kvm_irqchip (in)
744Returns: 0 on success, -1 on error
745
746Sets the state of a kernel interrupt controller created with
747KVM_CREATE_IRQCHIP from a buffer provided by the caller.
748
749struct kvm_irqchip {
750 __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
751 __u32 pad;
752 union {
753 char dummy[512]; /* reserving space */
754 struct kvm_pic_state pic;
755 struct kvm_ioapic_state ioapic;
756 } chip;
757};
758
414fa985 759
68ba6974 7604.28 KVM_XEN_HVM_CONFIG
ffde22ac
ES
761
762Capability: KVM_CAP_XEN_HVM
763Architectures: x86
764Type: vm ioctl
765Parameters: struct kvm_xen_hvm_config (in)
766Returns: 0 on success, -1 on error
767
768Sets the MSR that the Xen HVM guest uses to initialize its hypercall
769page, and provides the starting address and size of the hypercall
770blobs in userspace. When the guest writes the MSR, kvm copies one
771page of a blob (32- or 64-bit, depending on the vcpu mode) to guest
772memory.
773
774struct kvm_xen_hvm_config {
775 __u32 flags;
776 __u32 msr;
777 __u64 blob_addr_32;
778 __u64 blob_addr_64;
779 __u8 blob_size_32;
780 __u8 blob_size_64;
781 __u8 pad2[30];
782};
783
414fa985 784
68ba6974 7854.29 KVM_GET_CLOCK
afbcf7ab
GC
786
787Capability: KVM_CAP_ADJUST_CLOCK
788Architectures: x86
789Type: vm ioctl
790Parameters: struct kvm_clock_data (out)
791Returns: 0 on success, -1 on error
792
793Gets the current timestamp of kvmclock as seen by the current guest. In
794conjunction with KVM_SET_CLOCK, it is used to ensure monotonicity on scenarios
795such as migration.
796
e3fd9a93
PB
797When KVM_CAP_ADJUST_CLOCK is passed to KVM_CHECK_EXTENSION, it returns the
798set of bits that KVM can return in struct kvm_clock_data's flag member.
799
800The only flag defined now is KVM_CLOCK_TSC_STABLE. If set, the returned
801value is the exact kvmclock value seen by all VCPUs at the instant
802when KVM_GET_CLOCK was called. If clear, the returned value is simply
803CLOCK_MONOTONIC plus a constant offset; the offset can be modified
804with KVM_SET_CLOCK. KVM will try to make all VCPUs follow this clock,
805but the exact value read by each VCPU could differ, because the host
806TSC is not stable.
807
afbcf7ab
GC
808struct kvm_clock_data {
809 __u64 clock; /* kvmclock current value */
810 __u32 flags;
811 __u32 pad[9];
812};
813
414fa985 814
68ba6974 8154.30 KVM_SET_CLOCK
afbcf7ab
GC
816
817Capability: KVM_CAP_ADJUST_CLOCK
818Architectures: x86
819Type: vm ioctl
820Parameters: struct kvm_clock_data (in)
821Returns: 0 on success, -1 on error
822
2044892d 823Sets the current timestamp of kvmclock to the value specified in its parameter.
afbcf7ab
GC
824In conjunction with KVM_GET_CLOCK, it is used to ensure monotonicity on scenarios
825such as migration.
826
827struct kvm_clock_data {
828 __u64 clock; /* kvmclock current value */
829 __u32 flags;
830 __u32 pad[9];
831};
832
414fa985 833
68ba6974 8344.31 KVM_GET_VCPU_EVENTS
3cfc3092
JK
835
836Capability: KVM_CAP_VCPU_EVENTS
48005f64 837Extended by: KVM_CAP_INTR_SHADOW
b0960b95 838Architectures: x86, arm, arm64
b7b27fac 839Type: vcpu ioctl
3cfc3092
JK
840Parameters: struct kvm_vcpu_event (out)
841Returns: 0 on success, -1 on error
842
b7b27fac
DG
843X86:
844
3cfc3092
JK
845Gets currently pending exceptions, interrupts, and NMIs as well as related
846states of the vcpu.
847
848struct kvm_vcpu_events {
849 struct {
850 __u8 injected;
851 __u8 nr;
852 __u8 has_error_code;
853 __u8 pad;
854 __u32 error_code;
855 } exception;
856 struct {
857 __u8 injected;
858 __u8 nr;
859 __u8 soft;
48005f64 860 __u8 shadow;
3cfc3092
JK
861 } interrupt;
862 struct {
863 __u8 injected;
864 __u8 pending;
865 __u8 masked;
866 __u8 pad;
867 } nmi;
868 __u32 sipi_vector;
dab4b911 869 __u32 flags;
f077825a
PB
870 struct {
871 __u8 smm;
872 __u8 pending;
873 __u8 smm_inside_nmi;
874 __u8 latched_init;
875 } smi;
3cfc3092
JK
876};
877
f077825a
PB
878Only two fields are defined in the flags field:
879
880- KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that
881 interrupt.shadow contains a valid state.
48005f64 882
f077825a
PB
883- KVM_VCPUEVENT_VALID_SMM may be set in the flags field to signal that
884 smi contains a valid state.
414fa985 885
b0960b95 886ARM/ARM64:
b7b27fac
DG
887
888If the guest accesses a device that is being emulated by the host kernel in
889such a way that a real device would generate a physical SError, KVM may make
890a virtual SError pending for that VCPU. This system error interrupt remains
891pending until the guest takes the exception by unmasking PSTATE.A.
892
893Running the VCPU may cause it to take a pending SError, or make an access that
894causes an SError to become pending. The event's description is only valid while
895the VPCU is not running.
896
897This API provides a way to read and write the pending 'event' state that is not
898visible to the guest. To save, restore or migrate a VCPU the struct representing
899the state can be read then written using this GET/SET API, along with the other
900guest-visible registers. It is not possible to 'cancel' an SError that has been
901made pending.
902
903A device being emulated in user-space may also wish to generate an SError. To do
904this the events structure can be populated by user-space. The current state
905should be read first, to ensure no existing SError is pending. If an existing
906SError is pending, the architecture's 'Multiple SError interrupts' rules should
907be followed. (2.5.3 of DDI0587.a "ARM Reliability, Availability, and
908Serviceability (RAS) Specification").
909
be26b3a7
DG
910SError exceptions always have an ESR value. Some CPUs have the ability to
911specify what the virtual SError's ESR value should be. These systems will
688e0581 912advertise KVM_CAP_ARM_INJECT_SERROR_ESR. In this case exception.has_esr will
be26b3a7
DG
913always have a non-zero value when read, and the agent making an SError pending
914should specify the ISS field in the lower 24 bits of exception.serror_esr. If
688e0581 915the system supports KVM_CAP_ARM_INJECT_SERROR_ESR, but user-space sets the events
be26b3a7
DG
916with exception.has_esr as zero, KVM will choose an ESR.
917
918Specifying exception.has_esr on a system that does not support it will return
919-EINVAL. Setting anything other than the lower 24bits of exception.serror_esr
920will return -EINVAL.
921
b7b27fac
DG
922struct kvm_vcpu_events {
923 struct {
924 __u8 serror_pending;
925 __u8 serror_has_esr;
926 /* Align it to 8 bytes */
927 __u8 pad[6];
928 __u64 serror_esr;
929 } exception;
930 __u32 reserved[12];
931};
932
68ba6974 9334.32 KVM_SET_VCPU_EVENTS
3cfc3092
JK
934
935Capability: KVM_CAP_VCPU_EVENTS
48005f64 936Extended by: KVM_CAP_INTR_SHADOW
b0960b95 937Architectures: x86, arm, arm64
b7b27fac 938Type: vcpu ioctl
3cfc3092
JK
939Parameters: struct kvm_vcpu_event (in)
940Returns: 0 on success, -1 on error
941
b7b27fac
DG
942X86:
943
3cfc3092
JK
944Set pending exceptions, interrupts, and NMIs as well as related states of the
945vcpu.
946
947See KVM_GET_VCPU_EVENTS for the data structure.
948
dab4b911 949Fields that may be modified asynchronously by running VCPUs can be excluded
f077825a
PB
950from the update. These fields are nmi.pending, sipi_vector, smi.smm,
951smi.pending. Keep the corresponding bits in the flags field cleared to
952suppress overwriting the current in-kernel state. The bits are:
dab4b911
JK
953
954KVM_VCPUEVENT_VALID_NMI_PENDING - transfer nmi.pending to the kernel
955KVM_VCPUEVENT_VALID_SIPI_VECTOR - transfer sipi_vector
f077825a 956KVM_VCPUEVENT_VALID_SMM - transfer the smi sub-struct.
dab4b911 957
48005f64
JK
958If KVM_CAP_INTR_SHADOW is available, KVM_VCPUEVENT_VALID_SHADOW can be set in
959the flags field to signal that interrupt.shadow contains a valid state and
960shall be written into the VCPU.
961
f077825a
PB
962KVM_VCPUEVENT_VALID_SMM can only be set if KVM_CAP_X86_SMM is available.
963
b0960b95 964ARM/ARM64:
b7b27fac
DG
965
966Set the pending SError exception state for this VCPU. It is not possible to
967'cancel' an Serror that has been made pending.
968
969See KVM_GET_VCPU_EVENTS for the data structure.
970
414fa985 971
68ba6974 9724.33 KVM_GET_DEBUGREGS
a1efbe77
JK
973
974Capability: KVM_CAP_DEBUGREGS
975Architectures: x86
976Type: vm ioctl
977Parameters: struct kvm_debugregs (out)
978Returns: 0 on success, -1 on error
979
980Reads debug registers from the vcpu.
981
982struct kvm_debugregs {
983 __u64 db[4];
984 __u64 dr6;
985 __u64 dr7;
986 __u64 flags;
987 __u64 reserved[9];
988};
989
414fa985 990
68ba6974 9914.34 KVM_SET_DEBUGREGS
a1efbe77
JK
992
993Capability: KVM_CAP_DEBUGREGS
994Architectures: x86
995Type: vm ioctl
996Parameters: struct kvm_debugregs (in)
997Returns: 0 on success, -1 on error
998
999Writes debug registers into the vcpu.
1000
1001See KVM_GET_DEBUGREGS for the data structure. The flags field is unused
1002yet and must be cleared on entry.
1003
414fa985 1004
68ba6974 10054.35 KVM_SET_USER_MEMORY_REGION
0f2d8f4d
AK
1006
1007Capability: KVM_CAP_USER_MEM
1008Architectures: all
1009Type: vm ioctl
1010Parameters: struct kvm_userspace_memory_region (in)
1011Returns: 0 on success, -1 on error
1012
1013struct kvm_userspace_memory_region {
1014 __u32 slot;
1015 __u32 flags;
1016 __u64 guest_phys_addr;
1017 __u64 memory_size; /* bytes */
1018 __u64 userspace_addr; /* start of the userspace allocated memory */
1019};
1020
1021/* for kvm_memory_region::flags */
4d8b81ab
XG
1022#define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0)
1023#define KVM_MEM_READONLY (1UL << 1)
0f2d8f4d
AK
1024
1025This ioctl allows the user to create or modify a guest physical memory
1026slot. When changing an existing slot, it may be moved in the guest
1027physical memory space, or its flags may be modified. It may not be
1028resized. Slots may not overlap in guest physical address space.
a677e704
LC
1029Bits 0-15 of "slot" specifies the slot id and this value should be
1030less than the maximum number of user memory slots supported per VM.
1031The maximum allowed slots can be queried using KVM_CAP_NR_MEMSLOTS,
1032if this capability is supported by the architecture.
0f2d8f4d 1033
f481b069
PB
1034If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of "slot"
1035specifies the address space which is being modified. They must be
1036less than the value that KVM_CHECK_EXTENSION returns for the
1037KVM_CAP_MULTI_ADDRESS_SPACE capability. Slots in separate address spaces
1038are unrelated; the restriction on overlapping slots only applies within
1039each address space.
1040
0f2d8f4d
AK
1041Memory for the region is taken starting at the address denoted by the
1042field userspace_addr, which must point at user addressable memory for
1043the entire memory slot size. Any object may back this memory, including
1044anonymous memory, ordinary files, and hugetlbfs.
1045
1046It is recommended that the lower 21 bits of guest_phys_addr and userspace_addr
1047be identical. This allows large pages in the guest to be backed by large
1048pages in the host.
1049
75d61fbc
TY
1050The flags field supports two flags: KVM_MEM_LOG_DIRTY_PAGES and
1051KVM_MEM_READONLY. The former can be set to instruct KVM to keep track of
1052writes to memory within the slot. See KVM_GET_DIRTY_LOG ioctl to know how to
1053use it. The latter can be set, if KVM_CAP_READONLY_MEM capability allows it,
1054to make a new slot read-only. In this case, writes to this memory will be
1055posted to userspace as KVM_EXIT_MMIO exits.
7efd8fa1
JK
1056
1057When the KVM_CAP_SYNC_MMU capability is available, changes in the backing of
1058the memory region are automatically reflected into the guest. For example, an
1059mmap() that affects the region will be made visible immediately. Another
1060example is madvise(MADV_DROP).
0f2d8f4d
AK
1061
1062It is recommended to use this API instead of the KVM_SET_MEMORY_REGION ioctl.
1063The KVM_SET_MEMORY_REGION does not allow fine grained control over memory
1064allocation and is deprecated.
3cfc3092 1065
414fa985 1066
68ba6974 10674.36 KVM_SET_TSS_ADDR
8a5416db
AK
1068
1069Capability: KVM_CAP_SET_TSS_ADDR
1070Architectures: x86
1071Type: vm ioctl
1072Parameters: unsigned long tss_address (in)
1073Returns: 0 on success, -1 on error
1074
1075This ioctl defines the physical address of a three-page region in the guest
1076physical address space. The region must be within the first 4GB of the
1077guest physical address space and must not conflict with any memory slot
1078or any mmio address. The guest may malfunction if it accesses this memory
1079region.
1080
1081This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1082because of a quirk in the virtualization implementation (see the internals
1083documentation when it pops into existence).
1084
414fa985 1085
68ba6974 10864.37 KVM_ENABLE_CAP
71fbfd5f 1087
d938dc55 1088Capability: KVM_CAP_ENABLE_CAP, KVM_CAP_ENABLE_CAP_VM
90de4a18
NA
1089Architectures: x86 (only KVM_CAP_ENABLE_CAP_VM),
1090 mips (only KVM_CAP_ENABLE_CAP), ppc, s390
d938dc55 1091Type: vcpu ioctl, vm ioctl (with KVM_CAP_ENABLE_CAP_VM)
71fbfd5f
AG
1092Parameters: struct kvm_enable_cap (in)
1093Returns: 0 on success; -1 on error
1094
1095+Not all extensions are enabled by default. Using this ioctl the application
1096can enable an extension, making it available to the guest.
1097
1098On systems that do not support this ioctl, it always fails. On systems that
1099do support it, it only works for extensions that are supported for enablement.
1100
1101To check if a capability can be enabled, the KVM_CHECK_EXTENSION ioctl should
1102be used.
1103
1104struct kvm_enable_cap {
1105 /* in */
1106 __u32 cap;
1107
1108The capability that is supposed to get enabled.
1109
1110 __u32 flags;
1111
1112A bitfield indicating future enhancements. Has to be 0 for now.
1113
1114 __u64 args[4];
1115
1116Arguments for enabling a feature. If a feature needs initial values to
1117function properly, this is the place to put them.
1118
1119 __u8 pad[64];
1120};
1121
d938dc55
CH
1122The vcpu ioctl should be used for vcpu-specific capabilities, the vm ioctl
1123for vm-wide capabilities.
414fa985 1124
68ba6974 11254.38 KVM_GET_MP_STATE
b843f065
AK
1126
1127Capability: KVM_CAP_MP_STATE
ecccf0cc 1128Architectures: x86, s390, arm, arm64
b843f065
AK
1129Type: vcpu ioctl
1130Parameters: struct kvm_mp_state (out)
1131Returns: 0 on success; -1 on error
1132
1133struct kvm_mp_state {
1134 __u32 mp_state;
1135};
1136
1137Returns the vcpu's current "multiprocessing state" (though also valid on
1138uniprocessor guests).
1139
1140Possible values are:
1141
ecccf0cc 1142 - KVM_MP_STATE_RUNNABLE: the vcpu is currently running [x86,arm/arm64]
b843f065 1143 - KVM_MP_STATE_UNINITIALIZED: the vcpu is an application processor (AP)
c32a4272 1144 which has not yet received an INIT signal [x86]
b843f065 1145 - KVM_MP_STATE_INIT_RECEIVED: the vcpu has received an INIT signal, and is
c32a4272 1146 now ready for a SIPI [x86]
b843f065 1147 - KVM_MP_STATE_HALTED: the vcpu has executed a HLT instruction and
c32a4272 1148 is waiting for an interrupt [x86]
b843f065 1149 - KVM_MP_STATE_SIPI_RECEIVED: the vcpu has just received a SIPI (vector
c32a4272 1150 accessible via KVM_GET_VCPU_EVENTS) [x86]
ecccf0cc 1151 - KVM_MP_STATE_STOPPED: the vcpu is stopped [s390,arm/arm64]
6352e4d2
DH
1152 - KVM_MP_STATE_CHECK_STOP: the vcpu is in a special error state [s390]
1153 - KVM_MP_STATE_OPERATING: the vcpu is operating (running or halted)
1154 [s390]
1155 - KVM_MP_STATE_LOAD: the vcpu is in a special load/startup state
1156 [s390]
b843f065 1157
c32a4272 1158On x86, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an
0b4820d6
DH
1159in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1160these architectures.
b843f065 1161
ecccf0cc
AB
1162For arm/arm64:
1163
1164The only states that are valid are KVM_MP_STATE_STOPPED and
1165KVM_MP_STATE_RUNNABLE which reflect if the vcpu is paused or not.
414fa985 1166
68ba6974 11674.39 KVM_SET_MP_STATE
b843f065
AK
1168
1169Capability: KVM_CAP_MP_STATE
ecccf0cc 1170Architectures: x86, s390, arm, arm64
b843f065
AK
1171Type: vcpu ioctl
1172Parameters: struct kvm_mp_state (in)
1173Returns: 0 on success; -1 on error
1174
1175Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for
1176arguments.
1177
c32a4272 1178On x86, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an
0b4820d6
DH
1179in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1180these architectures.
b843f065 1181
ecccf0cc
AB
1182For arm/arm64:
1183
1184The only states that are valid are KVM_MP_STATE_STOPPED and
1185KVM_MP_STATE_RUNNABLE which reflect if the vcpu should be paused or not.
414fa985 1186
68ba6974 11874.40 KVM_SET_IDENTITY_MAP_ADDR
47dbb84f
AK
1188
1189Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR
1190Architectures: x86
1191Type: vm ioctl
1192Parameters: unsigned long identity (in)
1193Returns: 0 on success, -1 on error
1194
1195This ioctl defines the physical address of a one-page region in the guest
1196physical address space. The region must be within the first 4GB of the
1197guest physical address space and must not conflict with any memory slot
1198or any mmio address. The guest may malfunction if it accesses this memory
1199region.
1200
726b99c4
DH
1201Setting the address to 0 will result in resetting the address to its default
1202(0xfffbc000).
1203
47dbb84f
AK
1204This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1205because of a quirk in the virtualization implementation (see the internals
1206documentation when it pops into existence).
1207
1af1ac91 1208Fails if any VCPU has already been created.
414fa985 1209
68ba6974 12104.41 KVM_SET_BOOT_CPU_ID
57bc24cf
AK
1211
1212Capability: KVM_CAP_SET_BOOT_CPU_ID
c32a4272 1213Architectures: x86
57bc24cf
AK
1214Type: vm ioctl
1215Parameters: unsigned long vcpu_id
1216Returns: 0 on success, -1 on error
1217
1218Define which vcpu is the Bootstrap Processor (BSP). Values are the same
1219as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default
1220is vcpu 0.
1221
414fa985 1222
68ba6974 12234.42 KVM_GET_XSAVE
2d5b5a66
SY
1224
1225Capability: KVM_CAP_XSAVE
1226Architectures: x86
1227Type: vcpu ioctl
1228Parameters: struct kvm_xsave (out)
1229Returns: 0 on success, -1 on error
1230
1231struct kvm_xsave {
1232 __u32 region[1024];
1233};
1234
1235This ioctl would copy current vcpu's xsave struct to the userspace.
1236
414fa985 1237
68ba6974 12384.43 KVM_SET_XSAVE
2d5b5a66
SY
1239
1240Capability: KVM_CAP_XSAVE
1241Architectures: x86
1242Type: vcpu ioctl
1243Parameters: struct kvm_xsave (in)
1244Returns: 0 on success, -1 on error
1245
1246struct kvm_xsave {
1247 __u32 region[1024];
1248};
1249
1250This ioctl would copy userspace's xsave struct to the kernel.
1251
414fa985 1252
68ba6974 12534.44 KVM_GET_XCRS
2d5b5a66
SY
1254
1255Capability: KVM_CAP_XCRS
1256Architectures: x86
1257Type: vcpu ioctl
1258Parameters: struct kvm_xcrs (out)
1259Returns: 0 on success, -1 on error
1260
1261struct kvm_xcr {
1262 __u32 xcr;
1263 __u32 reserved;
1264 __u64 value;
1265};
1266
1267struct kvm_xcrs {
1268 __u32 nr_xcrs;
1269 __u32 flags;
1270 struct kvm_xcr xcrs[KVM_MAX_XCRS];
1271 __u64 padding[16];
1272};
1273
1274This ioctl would copy current vcpu's xcrs to the userspace.
1275
414fa985 1276
68ba6974 12774.45 KVM_SET_XCRS
2d5b5a66
SY
1278
1279Capability: KVM_CAP_XCRS
1280Architectures: x86
1281Type: vcpu ioctl
1282Parameters: struct kvm_xcrs (in)
1283Returns: 0 on success, -1 on error
1284
1285struct kvm_xcr {
1286 __u32 xcr;
1287 __u32 reserved;
1288 __u64 value;
1289};
1290
1291struct kvm_xcrs {
1292 __u32 nr_xcrs;
1293 __u32 flags;
1294 struct kvm_xcr xcrs[KVM_MAX_XCRS];
1295 __u64 padding[16];
1296};
1297
1298This ioctl would set vcpu's xcr to the value userspace specified.
1299
414fa985 1300
68ba6974 13014.46 KVM_GET_SUPPORTED_CPUID
d153513d
AK
1302
1303Capability: KVM_CAP_EXT_CPUID
1304Architectures: x86
1305Type: system ioctl
1306Parameters: struct kvm_cpuid2 (in/out)
1307Returns: 0 on success, -1 on error
1308
1309struct kvm_cpuid2 {
1310 __u32 nent;
1311 __u32 padding;
1312 struct kvm_cpuid_entry2 entries[0];
1313};
1314
9c15bb1d
BP
1315#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
1316#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
1317#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
d153513d
AK
1318
1319struct kvm_cpuid_entry2 {
1320 __u32 function;
1321 __u32 index;
1322 __u32 flags;
1323 __u32 eax;
1324 __u32 ebx;
1325 __u32 ecx;
1326 __u32 edx;
1327 __u32 padding[3];
1328};
1329
df9cb9cc
JM
1330This ioctl returns x86 cpuid features which are supported by both the
1331hardware and kvm in its default configuration. Userspace can use the
1332information returned by this ioctl to construct cpuid information (for
1333KVM_SET_CPUID2) that is consistent with hardware, kernel, and
1334userspace capabilities, and with user requirements (for example, the
1335user may wish to constrain cpuid to emulate older hardware, or for
1336feature consistency across a cluster).
1337
1338Note that certain capabilities, such as KVM_CAP_X86_DISABLE_EXITS, may
1339expose cpuid features (e.g. MONITOR) which are not supported by kvm in
1340its default configuration. If userspace enables such capabilities, it
1341is responsible for modifying the results of this ioctl appropriately.
d153513d
AK
1342
1343Userspace invokes KVM_GET_SUPPORTED_CPUID by passing a kvm_cpuid2 structure
1344with the 'nent' field indicating the number of entries in the variable-size
1345array 'entries'. If the number of entries is too low to describe the cpu
1346capabilities, an error (E2BIG) is returned. If the number is too high,
1347the 'nent' field is adjusted and an error (ENOMEM) is returned. If the
1348number is just right, the 'nent' field is adjusted to the number of valid
1349entries in the 'entries' array, which is then filled.
1350
1351The entries returned are the host cpuid as returned by the cpuid instruction,
c39cbd2a
AK
1352with unknown or unsupported features masked out. Some features (for example,
1353x2apic), may not be present in the host cpu, but are exposed by kvm if it can
1354emulate them efficiently. The fields in each entry are defined as follows:
d153513d
AK
1355
1356 function: the eax value used to obtain the entry
1357 index: the ecx value used to obtain the entry (for entries that are
1358 affected by ecx)
1359 flags: an OR of zero or more of the following:
1360 KVM_CPUID_FLAG_SIGNIFCANT_INDEX:
1361 if the index field is valid
1362 KVM_CPUID_FLAG_STATEFUL_FUNC:
1363 if cpuid for this function returns different values for successive
1364 invocations; there will be several entries with the same function,
1365 all with this flag set
1366 KVM_CPUID_FLAG_STATE_READ_NEXT:
1367 for KVM_CPUID_FLAG_STATEFUL_FUNC entries, set if this entry is
1368 the first entry to be read by a cpu
1369 eax, ebx, ecx, edx: the values returned by the cpuid instruction for
1370 this function/index combination
1371
4d25a066
JK
1372The TSC deadline timer feature (CPUID leaf 1, ecx[24]) is always returned
1373as false, since the feature depends on KVM_CREATE_IRQCHIP for local APIC
1374support. Instead it is reported via
1375
1376 ioctl(KVM_CHECK_EXTENSION, KVM_CAP_TSC_DEADLINE_TIMER)
1377
1378if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the
1379feature in userspace, then you can enable the feature for KVM_SET_CPUID2.
1380
414fa985 1381
68ba6974 13824.47 KVM_PPC_GET_PVINFO
15711e9c
AG
1383
1384Capability: KVM_CAP_PPC_GET_PVINFO
1385Architectures: ppc
1386Type: vm ioctl
1387Parameters: struct kvm_ppc_pvinfo (out)
1388Returns: 0 on success, !0 on error
1389
1390struct kvm_ppc_pvinfo {
1391 __u32 flags;
1392 __u32 hcall[4];
1393 __u8 pad[108];
1394};
1395
1396This ioctl fetches PV specific information that need to be passed to the guest
1397using the device tree or other means from vm context.
1398
9202e076 1399The hcall array defines 4 instructions that make up a hypercall.
15711e9c
AG
1400
1401If any additional field gets added to this structure later on, a bit for that
1402additional piece of information will be set in the flags bitmap.
1403
9202e076
LYB
1404The flags bitmap is defined as:
1405
1406 /* the host supports the ePAPR idle hcall
1407 #define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
414fa985 1408
68ba6974 14094.52 KVM_SET_GSI_ROUTING
49f48172
JK
1410
1411Capability: KVM_CAP_IRQ_ROUTING
180ae7b1 1412Architectures: x86 s390 arm arm64
49f48172
JK
1413Type: vm ioctl
1414Parameters: struct kvm_irq_routing (in)
1415Returns: 0 on success, -1 on error
1416
1417Sets the GSI routing table entries, overwriting any previously set entries.
1418
180ae7b1
EA
1419On arm/arm64, GSI routing has the following limitation:
1420- GSI routing does not apply to KVM_IRQ_LINE but only to KVM_IRQFD.
1421
49f48172
JK
1422struct kvm_irq_routing {
1423 __u32 nr;
1424 __u32 flags;
1425 struct kvm_irq_routing_entry entries[0];
1426};
1427
1428No flags are specified so far, the corresponding field must be set to zero.
1429
1430struct kvm_irq_routing_entry {
1431 __u32 gsi;
1432 __u32 type;
1433 __u32 flags;
1434 __u32 pad;
1435 union {
1436 struct kvm_irq_routing_irqchip irqchip;
1437 struct kvm_irq_routing_msi msi;
84223598 1438 struct kvm_irq_routing_s390_adapter adapter;
5c919412 1439 struct kvm_irq_routing_hv_sint hv_sint;
49f48172
JK
1440 __u32 pad[8];
1441 } u;
1442};
1443
1444/* gsi routing entry types */
1445#define KVM_IRQ_ROUTING_IRQCHIP 1
1446#define KVM_IRQ_ROUTING_MSI 2
84223598 1447#define KVM_IRQ_ROUTING_S390_ADAPTER 3
5c919412 1448#define KVM_IRQ_ROUTING_HV_SINT 4
49f48172 1449
76a10b86 1450flags:
6f49b2f3
PB
1451- KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI routing entry
1452 type, specifies that the devid field contains a valid value. The per-VM
1453 KVM_CAP_MSI_DEVID capability advertises the requirement to provide
1454 the device ID. If this capability is not available, userspace should
1455 never set the KVM_MSI_VALID_DEVID flag as the ioctl might fail.
76a10b86 1456- zero otherwise
49f48172
JK
1457
1458struct kvm_irq_routing_irqchip {
1459 __u32 irqchip;
1460 __u32 pin;
1461};
1462
1463struct kvm_irq_routing_msi {
1464 __u32 address_lo;
1465 __u32 address_hi;
1466 __u32 data;
76a10b86
EA
1467 union {
1468 __u32 pad;
1469 __u32 devid;
1470 };
49f48172
JK
1471};
1472
6f49b2f3
PB
1473If KVM_MSI_VALID_DEVID is set, devid contains a unique device identifier
1474for the device that wrote the MSI message. For PCI, this is usually a
1475BFD identifier in the lower 16 bits.
76a10b86 1476
37131313
RK
1477On x86, address_hi is ignored unless the KVM_X2APIC_API_USE_32BIT_IDS
1478feature of KVM_CAP_X2APIC_API capability is enabled. If it is enabled,
1479address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
1480address_hi must be zero.
1481
84223598
CH
1482struct kvm_irq_routing_s390_adapter {
1483 __u64 ind_addr;
1484 __u64 summary_addr;
1485 __u64 ind_offset;
1486 __u32 summary_offset;
1487 __u32 adapter_id;
1488};
1489
5c919412
AS
1490struct kvm_irq_routing_hv_sint {
1491 __u32 vcpu;
1492 __u32 sint;
1493};
414fa985 1494
414fa985
JK
1495
14964.55 KVM_SET_TSC_KHZ
92a1f12d
JR
1497
1498Capability: KVM_CAP_TSC_CONTROL
1499Architectures: x86
1500Type: vcpu ioctl
1501Parameters: virtual tsc_khz
1502Returns: 0 on success, -1 on error
1503
1504Specifies the tsc frequency for the virtual machine. The unit of the
1505frequency is KHz.
1506
414fa985
JK
1507
15084.56 KVM_GET_TSC_KHZ
92a1f12d
JR
1509
1510Capability: KVM_CAP_GET_TSC_KHZ
1511Architectures: x86
1512Type: vcpu ioctl
1513Parameters: none
1514Returns: virtual tsc-khz on success, negative value on error
1515
1516Returns the tsc frequency of the guest. The unit of the return value is
1517KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
1518error.
1519
414fa985
JK
1520
15214.57 KVM_GET_LAPIC
e7677933
AK
1522
1523Capability: KVM_CAP_IRQCHIP
1524Architectures: x86
1525Type: vcpu ioctl
1526Parameters: struct kvm_lapic_state (out)
1527Returns: 0 on success, -1 on error
1528
1529#define KVM_APIC_REG_SIZE 0x400
1530struct kvm_lapic_state {
1531 char regs[KVM_APIC_REG_SIZE];
1532};
1533
1534Reads the Local APIC registers and copies them into the input argument. The
1535data format and layout are the same as documented in the architecture manual.
1536
37131313
RK
1537If KVM_X2APIC_API_USE_32BIT_IDS feature of KVM_CAP_X2APIC_API is
1538enabled, then the format of APIC_ID register depends on the APIC mode
1539(reported by MSR_IA32_APICBASE) of its VCPU. x2APIC stores APIC ID in
1540the APIC_ID register (bytes 32-35). xAPIC only allows an 8-bit APIC ID
1541which is stored in bits 31-24 of the APIC register, or equivalently in
1542byte 35 of struct kvm_lapic_state's regs field. KVM_GET_LAPIC must then
1543be called after MSR_IA32_APICBASE has been set with KVM_SET_MSR.
1544
1545If KVM_X2APIC_API_USE_32BIT_IDS feature is disabled, struct kvm_lapic_state
1546always uses xAPIC format.
1547
414fa985
JK
1548
15494.58 KVM_SET_LAPIC
e7677933
AK
1550
1551Capability: KVM_CAP_IRQCHIP
1552Architectures: x86
1553Type: vcpu ioctl
1554Parameters: struct kvm_lapic_state (in)
1555Returns: 0 on success, -1 on error
1556
1557#define KVM_APIC_REG_SIZE 0x400
1558struct kvm_lapic_state {
1559 char regs[KVM_APIC_REG_SIZE];
1560};
1561
df5cbb27 1562Copies the input argument into the Local APIC registers. The data format
e7677933
AK
1563and layout are the same as documented in the architecture manual.
1564
37131313
RK
1565The format of the APIC ID register (bytes 32-35 of struct kvm_lapic_state's
1566regs field) depends on the state of the KVM_CAP_X2APIC_API capability.
1567See the note in KVM_GET_LAPIC.
1568
414fa985
JK
1569
15704.59 KVM_IOEVENTFD
55399a02
SL
1571
1572Capability: KVM_CAP_IOEVENTFD
1573Architectures: all
1574Type: vm ioctl
1575Parameters: struct kvm_ioeventfd (in)
1576Returns: 0 on success, !0 on error
1577
1578This ioctl attaches or detaches an ioeventfd to a legal pio/mmio address
1579within the guest. A guest write in the registered address will signal the
1580provided event instead of triggering an exit.
1581
1582struct kvm_ioeventfd {
1583 __u64 datamatch;
1584 __u64 addr; /* legal pio/mmio address */
e9ea5069 1585 __u32 len; /* 0, 1, 2, 4, or 8 bytes */
55399a02
SL
1586 __s32 fd;
1587 __u32 flags;
1588 __u8 pad[36];
1589};
1590
2b83451b
CH
1591For the special case of virtio-ccw devices on s390, the ioevent is matched
1592to a subchannel/virtqueue tuple instead.
1593
55399a02
SL
1594The following flags are defined:
1595
1596#define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
1597#define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
1598#define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign)
2b83451b
CH
1599#define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY \
1600 (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify)
55399a02
SL
1601
1602If datamatch flag is set, the event will be signaled only if the written value
1603to the registered address is equal to datamatch in struct kvm_ioeventfd.
1604
2b83451b
CH
1605For virtio-ccw devices, addr contains the subchannel id and datamatch the
1606virtqueue index.
1607
e9ea5069
JW
1608With KVM_CAP_IOEVENTFD_ANY_LENGTH, a zero length ioeventfd is allowed, and
1609the kernel will ignore the length of guest write and may get a faster vmexit.
1610The speedup may only apply to specific architectures, but the ioeventfd will
1611work anyway.
414fa985
JK
1612
16134.60 KVM_DIRTY_TLB
dc83b8bc
SW
1614
1615Capability: KVM_CAP_SW_TLB
1616Architectures: ppc
1617Type: vcpu ioctl
1618Parameters: struct kvm_dirty_tlb (in)
1619Returns: 0 on success, -1 on error
1620
1621struct kvm_dirty_tlb {
1622 __u64 bitmap;
1623 __u32 num_dirty;
1624};
1625
1626This must be called whenever userspace has changed an entry in the shared
1627TLB, prior to calling KVM_RUN on the associated vcpu.
1628
1629The "bitmap" field is the userspace address of an array. This array
1630consists of a number of bits, equal to the total number of TLB entries as
1631determined by the last successful call to KVM_CONFIG_TLB, rounded up to the
1632nearest multiple of 64.
1633
1634Each bit corresponds to one TLB entry, ordered the same as in the shared TLB
1635array.
1636
1637The array is little-endian: the bit 0 is the least significant bit of the
1638first byte, bit 8 is the least significant bit of the second byte, etc.
1639This avoids any complications with differing word sizes.
1640
1641The "num_dirty" field is a performance hint for KVM to determine whether it
1642should skip processing the bitmap and just invalidate everything. It must
1643be set to the number of set bits in the bitmap.
1644
414fa985 1645
54738c09
DG
16464.62 KVM_CREATE_SPAPR_TCE
1647
1648Capability: KVM_CAP_SPAPR_TCE
1649Architectures: powerpc
1650Type: vm ioctl
1651Parameters: struct kvm_create_spapr_tce (in)
1652Returns: file descriptor for manipulating the created TCE table
1653
1654This creates a virtual TCE (translation control entry) table, which
1655is an IOMMU for PAPR-style virtual I/O. It is used to translate
1656logical addresses used in virtual I/O into guest physical addresses,
1657and provides a scatter/gather capability for PAPR virtual I/O.
1658
1659/* for KVM_CAP_SPAPR_TCE */
1660struct kvm_create_spapr_tce {
1661 __u64 liobn;
1662 __u32 window_size;
1663};
1664
1665The liobn field gives the logical IO bus number for which to create a
1666TCE table. The window_size field specifies the size of the DMA window
1667which this TCE table will translate - the table will contain one 64
1668bit TCE entry for every 4kiB of the DMA window.
1669
1670When the guest issues an H_PUT_TCE hcall on a liobn for which a TCE
1671table has been created using this ioctl(), the kernel will handle it
1672in real mode, updating the TCE table. H_PUT_TCE calls for other
1673liobns will cause a vm exit and must be handled by userspace.
1674
1675The return value is a file descriptor which can be passed to mmap(2)
1676to map the created TCE table into userspace. This lets userspace read
1677the entries written by kernel-handled H_PUT_TCE calls, and also lets
1678userspace update the TCE table directly which is useful in some
1679circumstances.
1680
414fa985 1681
aa04b4cc
PM
16824.63 KVM_ALLOCATE_RMA
1683
1684Capability: KVM_CAP_PPC_RMA
1685Architectures: powerpc
1686Type: vm ioctl
1687Parameters: struct kvm_allocate_rma (out)
1688Returns: file descriptor for mapping the allocated RMA
1689
1690This allocates a Real Mode Area (RMA) from the pool allocated at boot
1691time by the kernel. An RMA is a physically-contiguous, aligned region
1692of memory used on older POWER processors to provide the memory which
1693will be accessed by real-mode (MMU off) accesses in a KVM guest.
1694POWER processors support a set of sizes for the RMA that usually
1695includes 64MB, 128MB, 256MB and some larger powers of two.
1696
1697/* for KVM_ALLOCATE_RMA */
1698struct kvm_allocate_rma {
1699 __u64 rma_size;
1700};
1701
1702The return value is a file descriptor which can be passed to mmap(2)
1703to map the allocated RMA into userspace. The mapped area can then be
1704passed to the KVM_SET_USER_MEMORY_REGION ioctl to establish it as the
1705RMA for a virtual machine. The size of the RMA in bytes (which is
1706fixed at host kernel boot time) is returned in the rma_size field of
1707the argument structure.
1708
1709The KVM_CAP_PPC_RMA capability is 1 or 2 if the KVM_ALLOCATE_RMA ioctl
1710is supported; 2 if the processor requires all virtual machines to have
1711an RMA, or 1 if the processor can use an RMA but doesn't require it,
1712because it supports the Virtual RMA (VRMA) facility.
1713
414fa985 1714
3f745f1e
AK
17154.64 KVM_NMI
1716
1717Capability: KVM_CAP_USER_NMI
1718Architectures: x86
1719Type: vcpu ioctl
1720Parameters: none
1721Returns: 0 on success, -1 on error
1722
1723Queues an NMI on the thread's vcpu. Note this is well defined only
1724when KVM_CREATE_IRQCHIP has not been called, since this is an interface
1725between the virtual cpu core and virtual local APIC. After KVM_CREATE_IRQCHIP
1726has been called, this interface is completely emulated within the kernel.
1727
1728To use this to emulate the LINT1 input with KVM_CREATE_IRQCHIP, use the
1729following algorithm:
1730
5d4f6f3d 1731 - pause the vcpu
3f745f1e
AK
1732 - read the local APIC's state (KVM_GET_LAPIC)
1733 - check whether changing LINT1 will queue an NMI (see the LVT entry for LINT1)
1734 - if so, issue KVM_NMI
1735 - resume the vcpu
1736
1737Some guests configure the LINT1 NMI input to cause a panic, aiding in
1738debugging.
1739
414fa985 1740
e24ed81f 17414.65 KVM_S390_UCAS_MAP
27e0393f
CO
1742
1743Capability: KVM_CAP_S390_UCONTROL
1744Architectures: s390
1745Type: vcpu ioctl
1746Parameters: struct kvm_s390_ucas_mapping (in)
1747Returns: 0 in case of success
1748
1749The parameter is defined like this:
1750 struct kvm_s390_ucas_mapping {
1751 __u64 user_addr;
1752 __u64 vcpu_addr;
1753 __u64 length;
1754 };
1755
1756This ioctl maps the memory at "user_addr" with the length "length" to
1757the vcpu's address space starting at "vcpu_addr". All parameters need to
f884ab15 1758be aligned by 1 megabyte.
27e0393f 1759
414fa985 1760
e24ed81f 17614.66 KVM_S390_UCAS_UNMAP
27e0393f
CO
1762
1763Capability: KVM_CAP_S390_UCONTROL
1764Architectures: s390
1765Type: vcpu ioctl
1766Parameters: struct kvm_s390_ucas_mapping (in)
1767Returns: 0 in case of success
1768
1769The parameter is defined like this:
1770 struct kvm_s390_ucas_mapping {
1771 __u64 user_addr;
1772 __u64 vcpu_addr;
1773 __u64 length;
1774 };
1775
1776This ioctl unmaps the memory in the vcpu's address space starting at
1777"vcpu_addr" with the length "length". The field "user_addr" is ignored.
f884ab15 1778All parameters need to be aligned by 1 megabyte.
27e0393f 1779
414fa985 1780
e24ed81f 17814.67 KVM_S390_VCPU_FAULT
ccc7910f
CO
1782
1783Capability: KVM_CAP_S390_UCONTROL
1784Architectures: s390
1785Type: vcpu ioctl
1786Parameters: vcpu absolute address (in)
1787Returns: 0 in case of success
1788
1789This call creates a page table entry on the virtual cpu's address space
1790(for user controlled virtual machines) or the virtual machine's address
1791space (for regular virtual machines). This only works for minor faults,
1792thus it's recommended to access subject memory page via the user page
1793table upfront. This is useful to handle validity intercepts for user
1794controlled virtual machines to fault in the virtual cpu's lowcore pages
1795prior to calling the KVM_RUN ioctl.
1796
414fa985 1797
e24ed81f
AG
17984.68 KVM_SET_ONE_REG
1799
1800Capability: KVM_CAP_ONE_REG
1801Architectures: all
1802Type: vcpu ioctl
1803Parameters: struct kvm_one_reg (in)
1804Returns: 0 on success, negative value on failure
1805
1806struct kvm_one_reg {
1807 __u64 id;
1808 __u64 addr;
1809};
1810
1811Using this ioctl, a single vcpu register can be set to a specific value
1812defined by user space with the passed in struct kvm_one_reg, where id
1813refers to the register identifier as described below and addr is a pointer
1814to a variable with the respective size. There can be architecture agnostic
1815and architecture specific registers. Each have their own range of operation
1816and their own constants and width. To keep track of the implemented
1817registers, find a list below:
1818
bf5590f3
JH
1819 Arch | Register | Width (bits)
1820 | |
1821 PPC | KVM_REG_PPC_HIOR | 64
1822 PPC | KVM_REG_PPC_IAC1 | 64
1823 PPC | KVM_REG_PPC_IAC2 | 64
1824 PPC | KVM_REG_PPC_IAC3 | 64
1825 PPC | KVM_REG_PPC_IAC4 | 64
1826 PPC | KVM_REG_PPC_DAC1 | 64
1827 PPC | KVM_REG_PPC_DAC2 | 64
1828 PPC | KVM_REG_PPC_DABR | 64
1829 PPC | KVM_REG_PPC_DSCR | 64
1830 PPC | KVM_REG_PPC_PURR | 64
1831 PPC | KVM_REG_PPC_SPURR | 64
1832 PPC | KVM_REG_PPC_DAR | 64
1833 PPC | KVM_REG_PPC_DSISR | 32
1834 PPC | KVM_REG_PPC_AMR | 64
1835 PPC | KVM_REG_PPC_UAMOR | 64
1836 PPC | KVM_REG_PPC_MMCR0 | 64
1837 PPC | KVM_REG_PPC_MMCR1 | 64
1838 PPC | KVM_REG_PPC_MMCRA | 64
1839 PPC | KVM_REG_PPC_MMCR2 | 64
1840 PPC | KVM_REG_PPC_MMCRS | 64
1841 PPC | KVM_REG_PPC_SIAR | 64
1842 PPC | KVM_REG_PPC_SDAR | 64
1843 PPC | KVM_REG_PPC_SIER | 64
1844 PPC | KVM_REG_PPC_PMC1 | 32
1845 PPC | KVM_REG_PPC_PMC2 | 32
1846 PPC | KVM_REG_PPC_PMC3 | 32
1847 PPC | KVM_REG_PPC_PMC4 | 32
1848 PPC | KVM_REG_PPC_PMC5 | 32
1849 PPC | KVM_REG_PPC_PMC6 | 32
1850 PPC | KVM_REG_PPC_PMC7 | 32
1851 PPC | KVM_REG_PPC_PMC8 | 32
1852 PPC | KVM_REG_PPC_FPR0 | 64
a8bd19ef 1853 ...
bf5590f3
JH
1854 PPC | KVM_REG_PPC_FPR31 | 64
1855 PPC | KVM_REG_PPC_VR0 | 128
a8bd19ef 1856 ...
bf5590f3
JH
1857 PPC | KVM_REG_PPC_VR31 | 128
1858 PPC | KVM_REG_PPC_VSR0 | 128
a8bd19ef 1859 ...
bf5590f3
JH
1860 PPC | KVM_REG_PPC_VSR31 | 128
1861 PPC | KVM_REG_PPC_FPSCR | 64
1862 PPC | KVM_REG_PPC_VSCR | 32
1863 PPC | KVM_REG_PPC_VPA_ADDR | 64
1864 PPC | KVM_REG_PPC_VPA_SLB | 128
1865 PPC | KVM_REG_PPC_VPA_DTL | 128
1866 PPC | KVM_REG_PPC_EPCR | 32
1867 PPC | KVM_REG_PPC_EPR | 32
1868 PPC | KVM_REG_PPC_TCR | 32
1869 PPC | KVM_REG_PPC_TSR | 32
1870 PPC | KVM_REG_PPC_OR_TSR | 32
1871 PPC | KVM_REG_PPC_CLEAR_TSR | 32
1872 PPC | KVM_REG_PPC_MAS0 | 32
1873 PPC | KVM_REG_PPC_MAS1 | 32
1874 PPC | KVM_REG_PPC_MAS2 | 64
1875 PPC | KVM_REG_PPC_MAS7_3 | 64
1876 PPC | KVM_REG_PPC_MAS4 | 32
1877 PPC | KVM_REG_PPC_MAS6 | 32
1878 PPC | KVM_REG_PPC_MMUCFG | 32
1879 PPC | KVM_REG_PPC_TLB0CFG | 32
1880 PPC | KVM_REG_PPC_TLB1CFG | 32
1881 PPC | KVM_REG_PPC_TLB2CFG | 32
1882 PPC | KVM_REG_PPC_TLB3CFG | 32
1883 PPC | KVM_REG_PPC_TLB0PS | 32
1884 PPC | KVM_REG_PPC_TLB1PS | 32
1885 PPC | KVM_REG_PPC_TLB2PS | 32
1886 PPC | KVM_REG_PPC_TLB3PS | 32
1887 PPC | KVM_REG_PPC_EPTCFG | 32
1888 PPC | KVM_REG_PPC_ICP_STATE | 64
1889 PPC | KVM_REG_PPC_TB_OFFSET | 64
1890 PPC | KVM_REG_PPC_SPMC1 | 32
1891 PPC | KVM_REG_PPC_SPMC2 | 32
1892 PPC | KVM_REG_PPC_IAMR | 64
1893 PPC | KVM_REG_PPC_TFHAR | 64
1894 PPC | KVM_REG_PPC_TFIAR | 64
1895 PPC | KVM_REG_PPC_TEXASR | 64
1896 PPC | KVM_REG_PPC_FSCR | 64
1897 PPC | KVM_REG_PPC_PSPB | 32
1898 PPC | KVM_REG_PPC_EBBHR | 64
1899 PPC | KVM_REG_PPC_EBBRR | 64
1900 PPC | KVM_REG_PPC_BESCR | 64
1901 PPC | KVM_REG_PPC_TAR | 64
1902 PPC | KVM_REG_PPC_DPDES | 64
1903 PPC | KVM_REG_PPC_DAWR | 64
1904 PPC | KVM_REG_PPC_DAWRX | 64
1905 PPC | KVM_REG_PPC_CIABR | 64
1906 PPC | KVM_REG_PPC_IC | 64
1907 PPC | KVM_REG_PPC_VTB | 64
1908 PPC | KVM_REG_PPC_CSIGR | 64
1909 PPC | KVM_REG_PPC_TACR | 64
1910 PPC | KVM_REG_PPC_TCSCR | 64
1911 PPC | KVM_REG_PPC_PID | 64
1912 PPC | KVM_REG_PPC_ACOP | 64
1913 PPC | KVM_REG_PPC_VRSAVE | 32
cc568ead
PB
1914 PPC | KVM_REG_PPC_LPCR | 32
1915 PPC | KVM_REG_PPC_LPCR_64 | 64
bf5590f3
JH
1916 PPC | KVM_REG_PPC_PPR | 64
1917 PPC | KVM_REG_PPC_ARCH_COMPAT | 32
1918 PPC | KVM_REG_PPC_DABRX | 32
1919 PPC | KVM_REG_PPC_WORT | 64
bc8a4e5c
BB
1920 PPC | KVM_REG_PPC_SPRG9 | 64
1921 PPC | KVM_REG_PPC_DBSR | 32
e9cf1e08
PM
1922 PPC | KVM_REG_PPC_TIDR | 64
1923 PPC | KVM_REG_PPC_PSSCR | 64
5855564c 1924 PPC | KVM_REG_PPC_DEC_EXPIRY | 64
bf5590f3 1925 PPC | KVM_REG_PPC_TM_GPR0 | 64
3b783474 1926 ...
bf5590f3
JH
1927 PPC | KVM_REG_PPC_TM_GPR31 | 64
1928 PPC | KVM_REG_PPC_TM_VSR0 | 128
3b783474 1929 ...
bf5590f3
JH
1930 PPC | KVM_REG_PPC_TM_VSR63 | 128
1931 PPC | KVM_REG_PPC_TM_CR | 64
1932 PPC | KVM_REG_PPC_TM_LR | 64
1933 PPC | KVM_REG_PPC_TM_CTR | 64
1934 PPC | KVM_REG_PPC_TM_FPSCR | 64
1935 PPC | KVM_REG_PPC_TM_AMR | 64
1936 PPC | KVM_REG_PPC_TM_PPR | 64
1937 PPC | KVM_REG_PPC_TM_VRSAVE | 64
1938 PPC | KVM_REG_PPC_TM_VSCR | 32
1939 PPC | KVM_REG_PPC_TM_DSCR | 64
1940 PPC | KVM_REG_PPC_TM_TAR | 64
0d808df0 1941 PPC | KVM_REG_PPC_TM_XER | 64
c2d2c21b
JH
1942 | |
1943 MIPS | KVM_REG_MIPS_R0 | 64
1944 ...
1945 MIPS | KVM_REG_MIPS_R31 | 64
1946 MIPS | KVM_REG_MIPS_HI | 64
1947 MIPS | KVM_REG_MIPS_LO | 64
1948 MIPS | KVM_REG_MIPS_PC | 64
1949 MIPS | KVM_REG_MIPS_CP0_INDEX | 32
013044cc
JH
1950 MIPS | KVM_REG_MIPS_CP0_ENTRYLO0 | 64
1951 MIPS | KVM_REG_MIPS_CP0_ENTRYLO1 | 64
c2d2c21b 1952 MIPS | KVM_REG_MIPS_CP0_CONTEXT | 64
dffe042f 1953 MIPS | KVM_REG_MIPS_CP0_CONTEXTCONFIG| 32
c2d2c21b 1954 MIPS | KVM_REG_MIPS_CP0_USERLOCAL | 64
dffe042f 1955 MIPS | KVM_REG_MIPS_CP0_XCONTEXTCONFIG| 64
c2d2c21b 1956 MIPS | KVM_REG_MIPS_CP0_PAGEMASK | 32
c992a4f6 1957 MIPS | KVM_REG_MIPS_CP0_PAGEGRAIN | 32
4b7de028
JH
1958 MIPS | KVM_REG_MIPS_CP0_SEGCTL0 | 64
1959 MIPS | KVM_REG_MIPS_CP0_SEGCTL1 | 64
1960 MIPS | KVM_REG_MIPS_CP0_SEGCTL2 | 64
5a2f352f
JH
1961 MIPS | KVM_REG_MIPS_CP0_PWBASE | 64
1962 MIPS | KVM_REG_MIPS_CP0_PWFIELD | 64
1963 MIPS | KVM_REG_MIPS_CP0_PWSIZE | 64
c2d2c21b 1964 MIPS | KVM_REG_MIPS_CP0_WIRED | 32
5a2f352f 1965 MIPS | KVM_REG_MIPS_CP0_PWCTL | 32
c2d2c21b
JH
1966 MIPS | KVM_REG_MIPS_CP0_HWRENA | 32
1967 MIPS | KVM_REG_MIPS_CP0_BADVADDR | 64
edc89260
JH
1968 MIPS | KVM_REG_MIPS_CP0_BADINSTR | 32
1969 MIPS | KVM_REG_MIPS_CP0_BADINSTRP | 32
c2d2c21b
JH
1970 MIPS | KVM_REG_MIPS_CP0_COUNT | 32
1971 MIPS | KVM_REG_MIPS_CP0_ENTRYHI | 64
1972 MIPS | KVM_REG_MIPS_CP0_COMPARE | 32
1973 MIPS | KVM_REG_MIPS_CP0_STATUS | 32
ad58d4d4 1974 MIPS | KVM_REG_MIPS_CP0_INTCTL | 32
c2d2c21b
JH
1975 MIPS | KVM_REG_MIPS_CP0_CAUSE | 32
1976 MIPS | KVM_REG_MIPS_CP0_EPC | 64
1068eaaf 1977 MIPS | KVM_REG_MIPS_CP0_PRID | 32
7801bbe1 1978 MIPS | KVM_REG_MIPS_CP0_EBASE | 64
c2d2c21b
JH
1979 MIPS | KVM_REG_MIPS_CP0_CONFIG | 32
1980 MIPS | KVM_REG_MIPS_CP0_CONFIG1 | 32
1981 MIPS | KVM_REG_MIPS_CP0_CONFIG2 | 32
1982 MIPS | KVM_REG_MIPS_CP0_CONFIG3 | 32
c771607a
JH
1983 MIPS | KVM_REG_MIPS_CP0_CONFIG4 | 32
1984 MIPS | KVM_REG_MIPS_CP0_CONFIG5 | 32
c2d2c21b 1985 MIPS | KVM_REG_MIPS_CP0_CONFIG7 | 32
c992a4f6 1986 MIPS | KVM_REG_MIPS_CP0_XCONTEXT | 64
c2d2c21b 1987 MIPS | KVM_REG_MIPS_CP0_ERROREPC | 64
05108709
JH
1988 MIPS | KVM_REG_MIPS_CP0_KSCRATCH1 | 64
1989 MIPS | KVM_REG_MIPS_CP0_KSCRATCH2 | 64
1990 MIPS | KVM_REG_MIPS_CP0_KSCRATCH3 | 64
1991 MIPS | KVM_REG_MIPS_CP0_KSCRATCH4 | 64
1992 MIPS | KVM_REG_MIPS_CP0_KSCRATCH5 | 64
1993 MIPS | KVM_REG_MIPS_CP0_KSCRATCH6 | 64
d42a008f 1994 MIPS | KVM_REG_MIPS_CP0_MAAR(0..63) | 64
c2d2c21b
JH
1995 MIPS | KVM_REG_MIPS_COUNT_CTL | 64
1996 MIPS | KVM_REG_MIPS_COUNT_RESUME | 64
1997 MIPS | KVM_REG_MIPS_COUNT_HZ | 64
379245cd
JH
1998 MIPS | KVM_REG_MIPS_FPR_32(0..31) | 32
1999 MIPS | KVM_REG_MIPS_FPR_64(0..31) | 64
ab86bd60 2000 MIPS | KVM_REG_MIPS_VEC_128(0..31) | 128
379245cd
JH
2001 MIPS | KVM_REG_MIPS_FCR_IR | 32
2002 MIPS | KVM_REG_MIPS_FCR_CSR | 32
ab86bd60
JH
2003 MIPS | KVM_REG_MIPS_MSA_IR | 32
2004 MIPS | KVM_REG_MIPS_MSA_CSR | 32
414fa985 2005
749cf76c
CD
2006ARM registers are mapped using the lower 32 bits. The upper 16 of that
2007is the register group type, or coprocessor number:
2008
2009ARM core registers have the following id bit patterns:
aa404ddf 2010 0x4020 0000 0010 <index into the kvm_regs struct:16>
749cf76c 2011
1138245c 2012ARM 32-bit CP15 registers have the following id bit patterns:
aa404ddf 2013 0x4020 0000 000F <zero:1> <crn:4> <crm:4> <opc1:4> <opc2:3>
1138245c
CD
2014
2015ARM 64-bit CP15 registers have the following id bit patterns:
aa404ddf 2016 0x4030 0000 000F <zero:1> <zero:4> <crm:4> <opc1:4> <zero:3>
749cf76c 2017
c27581ed 2018ARM CCSIDR registers are demultiplexed by CSSELR value:
aa404ddf 2019 0x4020 0000 0011 00 <csselr:8>
749cf76c 2020
4fe21e4c 2021ARM 32-bit VFP control registers have the following id bit patterns:
aa404ddf 2022 0x4020 0000 0012 1 <regno:12>
4fe21e4c
RR
2023
2024ARM 64-bit FP registers have the following id bit patterns:
aa404ddf 2025 0x4030 0000 0012 0 <regno:12>
4fe21e4c 2026
85bd0ba1
MZ
2027ARM firmware pseudo-registers have the following bit pattern:
2028 0x4030 0000 0014 <regno:16>
2029
379e04c7
MZ
2030
2031arm64 registers are mapped using the lower 32 bits. The upper 16 of
2032that is the register group type, or coprocessor number:
2033
2034arm64 core/FP-SIMD registers have the following id bit patterns. Note
2035that the size of the access is variable, as the kvm_regs structure
2036contains elements ranging from 32 to 128 bits. The index is a 32bit
2037value in the kvm_regs structure seen as a 32bit array.
2038 0x60x0 0000 0010 <index into the kvm_regs struct:16>
2039
2040arm64 CCSIDR registers are demultiplexed by CSSELR value:
2041 0x6020 0000 0011 00 <csselr:8>
2042
2043arm64 system registers have the following id bit patterns:
2044 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>
2045
85bd0ba1
MZ
2046arm64 firmware pseudo-registers have the following bit pattern:
2047 0x6030 0000 0014 <regno:16>
2048
c2d2c21b
JH
2049
2050MIPS registers are mapped using the lower 32 bits. The upper 16 of that is
2051the register group type:
2052
2053MIPS core registers (see above) have the following id bit patterns:
2054 0x7030 0000 0000 <reg:16>
2055
2056MIPS CP0 registers (see KVM_REG_MIPS_CP0_* above) have the following id bit
2057patterns depending on whether they're 32-bit or 64-bit registers:
2058 0x7020 0000 0001 00 <reg:5> <sel:3> (32-bit)
2059 0x7030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2060
013044cc
JH
2061Note: KVM_REG_MIPS_CP0_ENTRYLO0 and KVM_REG_MIPS_CP0_ENTRYLO1 are the MIPS64
2062versions of the EntryLo registers regardless of the word size of the host
2063hardware, host kernel, guest, and whether XPA is present in the guest, i.e.
2064with the RI and XI bits (if they exist) in bits 63 and 62 respectively, and
2065the PFNX field starting at bit 30.
2066
d42a008f
JH
2067MIPS MAARs (see KVM_REG_MIPS_CP0_MAAR(*) above) have the following id bit
2068patterns:
2069 0x7030 0000 0001 01 <reg:8>
2070
c2d2c21b
JH
2071MIPS KVM control registers (see above) have the following id bit patterns:
2072 0x7030 0000 0002 <reg:16>
2073
379245cd
JH
2074MIPS FPU registers (see KVM_REG_MIPS_FPR_{32,64}() above) have the following
2075id bit patterns depending on the size of the register being accessed. They are
2076always accessed according to the current guest FPU mode (Status.FR and
2077Config5.FRE), i.e. as the guest would see them, and they become unpredictable
ab86bd60
JH
2078if the guest FPU mode is changed. MIPS SIMD Architecture (MSA) vector
2079registers (see KVM_REG_MIPS_VEC_128() above) have similar patterns as they
2080overlap the FPU registers:
379245cd
JH
2081 0x7020 0000 0003 00 <0:3> <reg:5> (32-bit FPU registers)
2082 0x7030 0000 0003 00 <0:3> <reg:5> (64-bit FPU registers)
ab86bd60 2083 0x7040 0000 0003 00 <0:3> <reg:5> (128-bit MSA vector registers)
379245cd
JH
2084
2085MIPS FPU control registers (see KVM_REG_MIPS_FCR_{IR,CSR} above) have the
2086following id bit patterns:
2087 0x7020 0000 0003 01 <0:3> <reg:5>
2088
ab86bd60
JH
2089MIPS MSA control registers (see KVM_REG_MIPS_MSA_{IR,CSR} above) have the
2090following id bit patterns:
2091 0x7020 0000 0003 02 <0:3> <reg:5>
2092
c2d2c21b 2093
e24ed81f
AG
20944.69 KVM_GET_ONE_REG
2095
2096Capability: KVM_CAP_ONE_REG
2097Architectures: all
2098Type: vcpu ioctl
2099Parameters: struct kvm_one_reg (in and out)
2100Returns: 0 on success, negative value on failure
2101
2102This ioctl allows to receive the value of a single register implemented
2103in a vcpu. The register to read is indicated by the "id" field of the
2104kvm_one_reg struct passed in. On success, the register value can be found
2105at the memory location pointed to by "addr".
2106
2107The list of registers accessible using this interface is identical to the
2e232702 2108list in 4.68.
e24ed81f 2109
414fa985 2110
1c0b28c2
EM
21114.70 KVM_KVMCLOCK_CTRL
2112
2113Capability: KVM_CAP_KVMCLOCK_CTRL
2114Architectures: Any that implement pvclocks (currently x86 only)
2115Type: vcpu ioctl
2116Parameters: None
2117Returns: 0 on success, -1 on error
2118
2119This signals to the host kernel that the specified guest is being paused by
2120userspace. The host will set a flag in the pvclock structure that is checked
2121from the soft lockup watchdog. The flag is part of the pvclock structure that
2122is shared between guest and host, specifically the second bit of the flags
2123field of the pvclock_vcpu_time_info structure. It will be set exclusively by
2124the host and read/cleared exclusively by the guest. The guest operation of
2125checking and clearing the flag must an atomic operation so
2126load-link/store-conditional, or equivalent must be used. There are two cases
2127where the guest will clear the flag: when the soft lockup watchdog timer resets
2128itself or when a soft lockup is detected. This ioctl can be called any time
2129after pausing the vcpu, but before it is resumed.
2130
414fa985 2131
07975ad3
JK
21324.71 KVM_SIGNAL_MSI
2133
2134Capability: KVM_CAP_SIGNAL_MSI
2988509d 2135Architectures: x86 arm arm64
07975ad3
JK
2136Type: vm ioctl
2137Parameters: struct kvm_msi (in)
2138Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error
2139
2140Directly inject a MSI message. Only valid with in-kernel irqchip that handles
2141MSI messages.
2142
2143struct kvm_msi {
2144 __u32 address_lo;
2145 __u32 address_hi;
2146 __u32 data;
2147 __u32 flags;
2b8ddd93
AP
2148 __u32 devid;
2149 __u8 pad[12];
07975ad3
JK
2150};
2151
6f49b2f3
PB
2152flags: KVM_MSI_VALID_DEVID: devid contains a valid value. The per-VM
2153 KVM_CAP_MSI_DEVID capability advertises the requirement to provide
2154 the device ID. If this capability is not available, userspace
2155 should never set the KVM_MSI_VALID_DEVID flag as the ioctl might fail.
2b8ddd93 2156
6f49b2f3
PB
2157If KVM_MSI_VALID_DEVID is set, devid contains a unique device identifier
2158for the device that wrote the MSI message. For PCI, this is usually a
2159BFD identifier in the lower 16 bits.
07975ad3 2160
055b6ae9
PB
2161On x86, address_hi is ignored unless the KVM_X2APIC_API_USE_32BIT_IDS
2162feature of KVM_CAP_X2APIC_API capability is enabled. If it is enabled,
2163address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
2164address_hi must be zero.
37131313 2165
414fa985 2166
0589ff6c
JK
21674.71 KVM_CREATE_PIT2
2168
2169Capability: KVM_CAP_PIT2
2170Architectures: x86
2171Type: vm ioctl
2172Parameters: struct kvm_pit_config (in)
2173Returns: 0 on success, -1 on error
2174
2175Creates an in-kernel device model for the i8254 PIT. This call is only valid
2176after enabling in-kernel irqchip support via KVM_CREATE_IRQCHIP. The following
2177parameters have to be passed:
2178
2179struct kvm_pit_config {
2180 __u32 flags;
2181 __u32 pad[15];
2182};
2183
2184Valid flags are:
2185
2186#define KVM_PIT_SPEAKER_DUMMY 1 /* emulate speaker port stub */
2187
b6ddf05f
JK
2188PIT timer interrupts may use a per-VM kernel thread for injection. If it
2189exists, this thread will have a name of the following pattern:
2190
2191kvm-pit/<owner-process-pid>
2192
2193When running a guest with elevated priorities, the scheduling parameters of
2194this thread may have to be adjusted accordingly.
2195
0589ff6c
JK
2196This IOCTL replaces the obsolete KVM_CREATE_PIT.
2197
2198
21994.72 KVM_GET_PIT2
2200
2201Capability: KVM_CAP_PIT_STATE2
2202Architectures: x86
2203Type: vm ioctl
2204Parameters: struct kvm_pit_state2 (out)
2205Returns: 0 on success, -1 on error
2206
2207Retrieves the state of the in-kernel PIT model. Only valid after
2208KVM_CREATE_PIT2. The state is returned in the following structure:
2209
2210struct kvm_pit_state2 {
2211 struct kvm_pit_channel_state channels[3];
2212 __u32 flags;
2213 __u32 reserved[9];
2214};
2215
2216Valid flags are:
2217
2218/* disable PIT in HPET legacy mode */
2219#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
2220
2221This IOCTL replaces the obsolete KVM_GET_PIT.
2222
2223
22244.73 KVM_SET_PIT2
2225
2226Capability: KVM_CAP_PIT_STATE2
2227Architectures: x86
2228Type: vm ioctl
2229Parameters: struct kvm_pit_state2 (in)
2230Returns: 0 on success, -1 on error
2231
2232Sets the state of the in-kernel PIT model. Only valid after KVM_CREATE_PIT2.
2233See KVM_GET_PIT2 for details on struct kvm_pit_state2.
2234
2235This IOCTL replaces the obsolete KVM_SET_PIT.
2236
2237
5b74716e
BH
22384.74 KVM_PPC_GET_SMMU_INFO
2239
2240Capability: KVM_CAP_PPC_GET_SMMU_INFO
2241Architectures: powerpc
2242Type: vm ioctl
2243Parameters: None
2244Returns: 0 on success, -1 on error
2245
2246This populates and returns a structure describing the features of
2247the "Server" class MMU emulation supported by KVM.
cc22c354 2248This can in turn be used by userspace to generate the appropriate
5b74716e
BH
2249device-tree properties for the guest operating system.
2250
c98be0c9 2251The structure contains some global information, followed by an
5b74716e
BH
2252array of supported segment page sizes:
2253
2254 struct kvm_ppc_smmu_info {
2255 __u64 flags;
2256 __u32 slb_size;
2257 __u32 pad;
2258 struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
2259 };
2260
2261The supported flags are:
2262
2263 - KVM_PPC_PAGE_SIZES_REAL:
2264 When that flag is set, guest page sizes must "fit" the backing
2265 store page sizes. When not set, any page size in the list can
2266 be used regardless of how they are backed by userspace.
2267
2268 - KVM_PPC_1T_SEGMENTS
2269 The emulated MMU supports 1T segments in addition to the
2270 standard 256M ones.
2271
2272The "slb_size" field indicates how many SLB entries are supported
2273
2274The "sps" array contains 8 entries indicating the supported base
2275page sizes for a segment in increasing order. Each entry is defined
2276as follow:
2277
2278 struct kvm_ppc_one_seg_page_size {
2279 __u32 page_shift; /* Base page shift of segment (or 0) */
2280 __u32 slb_enc; /* SLB encoding for BookS */
2281 struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
2282 };
2283
2284An entry with a "page_shift" of 0 is unused. Because the array is
2285organized in increasing order, a lookup can stop when encoutering
2286such an entry.
2287
2288The "slb_enc" field provides the encoding to use in the SLB for the
2289page size. The bits are in positions such as the value can directly
2290be OR'ed into the "vsid" argument of the slbmte instruction.
2291
2292The "enc" array is a list which for each of those segment base page
2293size provides the list of supported actual page sizes (which can be
2294only larger or equal to the base page size), along with the
f884ab15 2295corresponding encoding in the hash PTE. Similarly, the array is
5b74716e
BH
22968 entries sorted by increasing sizes and an entry with a "0" shift
2297is an empty entry and a terminator:
2298
2299 struct kvm_ppc_one_page_size {
2300 __u32 page_shift; /* Page shift (or 0) */
2301 __u32 pte_enc; /* Encoding in the HPTE (>>12) */
2302 };
2303
2304The "pte_enc" field provides a value that can OR'ed into the hash
2305PTE's RPN field (ie, it needs to be shifted left by 12 to OR it
2306into the hash PTE second double word).
2307
f36992e3
AW
23084.75 KVM_IRQFD
2309
2310Capability: KVM_CAP_IRQFD
174178fe 2311Architectures: x86 s390 arm arm64
f36992e3
AW
2312Type: vm ioctl
2313Parameters: struct kvm_irqfd (in)
2314Returns: 0 on success, -1 on error
2315
2316Allows setting an eventfd to directly trigger a guest interrupt.
2317kvm_irqfd.fd specifies the file descriptor to use as the eventfd and
2318kvm_irqfd.gsi specifies the irqchip pin toggled by this event. When
17180032 2319an event is triggered on the eventfd, an interrupt is injected into
f36992e3
AW
2320the guest using the specified gsi pin. The irqfd is removed using
2321the KVM_IRQFD_FLAG_DEASSIGN flag, specifying both kvm_irqfd.fd
2322and kvm_irqfd.gsi.
2323
7a84428a
AW
2324With KVM_CAP_IRQFD_RESAMPLE, KVM_IRQFD supports a de-assert and notify
2325mechanism allowing emulation of level-triggered, irqfd-based
2326interrupts. When KVM_IRQFD_FLAG_RESAMPLE is set the user must pass an
2327additional eventfd in the kvm_irqfd.resamplefd field. When operating
2328in resample mode, posting of an interrupt through kvm_irq.fd asserts
2329the specified gsi in the irqchip. When the irqchip is resampled, such
17180032 2330as from an EOI, the gsi is de-asserted and the user is notified via
7a84428a
AW
2331kvm_irqfd.resamplefd. It is the user's responsibility to re-queue
2332the interrupt if the device making use of it still requires service.
2333Note that closing the resamplefd is not sufficient to disable the
2334irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment
2335and need not be specified with KVM_IRQFD_FLAG_DEASSIGN.
2336
180ae7b1
EA
2337On arm/arm64, gsi routing being supported, the following can happen:
2338- in case no routing entry is associated to this gsi, injection fails
2339- in case the gsi is associated to an irqchip routing entry,
2340 irqchip.pin + 32 corresponds to the injected SPI ID.
995a0ee9
EA
2341- in case the gsi is associated to an MSI routing entry, the MSI
2342 message and device ID are translated into an LPI (support restricted
2343 to GICv3 ITS in-kernel emulation).
174178fe 2344
5fecc9d8 23454.76 KVM_PPC_ALLOCATE_HTAB
32fad281
PM
2346
2347Capability: KVM_CAP_PPC_ALLOC_HTAB
2348Architectures: powerpc
2349Type: vm ioctl
2350Parameters: Pointer to u32 containing hash table order (in/out)
2351Returns: 0 on success, -1 on error
2352
2353This requests the host kernel to allocate an MMU hash table for a
2354guest using the PAPR paravirtualization interface. This only does
2355anything if the kernel is configured to use the Book 3S HV style of
2356virtualization. Otherwise the capability doesn't exist and the ioctl
2357returns an ENOTTY error. The rest of this description assumes Book 3S
2358HV.
2359
2360There must be no vcpus running when this ioctl is called; if there
2361are, it will do nothing and return an EBUSY error.
2362
2363The parameter is a pointer to a 32-bit unsigned integer variable
2364containing the order (log base 2) of the desired size of the hash
2365table, which must be between 18 and 46. On successful return from the
f98a8bf9 2366ioctl, the value will not be changed by the kernel.
32fad281
PM
2367
2368If no hash table has been allocated when any vcpu is asked to run
2369(with the KVM_RUN ioctl), the host kernel will allocate a
2370default-sized hash table (16 MB).
2371
2372If this ioctl is called when a hash table has already been allocated,
f98a8bf9
DG
2373with a different order from the existing hash table, the existing hash
2374table will be freed and a new one allocated. If this is ioctl is
2375called when a hash table has already been allocated of the same order
2376as specified, the kernel will clear out the existing hash table (zero
2377all HPTEs). In either case, if the guest is using the virtualized
2378real-mode area (VRMA) facility, the kernel will re-create the VMRA
2379HPTEs on the next KVM_RUN of any vcpu.
32fad281 2380
416ad65f
CH
23814.77 KVM_S390_INTERRUPT
2382
2383Capability: basic
2384Architectures: s390
2385Type: vm ioctl, vcpu ioctl
2386Parameters: struct kvm_s390_interrupt (in)
2387Returns: 0 on success, -1 on error
2388
2389Allows to inject an interrupt to the guest. Interrupts can be floating
2390(vm ioctl) or per cpu (vcpu ioctl), depending on the interrupt type.
2391
2392Interrupt parameters are passed via kvm_s390_interrupt:
2393
2394struct kvm_s390_interrupt {
2395 __u32 type;
2396 __u32 parm;
2397 __u64 parm64;
2398};
2399
2400type can be one of the following:
2401
2822545f 2402KVM_S390_SIGP_STOP (vcpu) - sigp stop; optional flags in parm
416ad65f
CH
2403KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm
2404KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm
2405KVM_S390_RESTART (vcpu) - restart
e029ae5b
TH
2406KVM_S390_INT_CLOCK_COMP (vcpu) - clock comparator interrupt
2407KVM_S390_INT_CPU_TIMER (vcpu) - CPU timer interrupt
416ad65f
CH
2408KVM_S390_INT_VIRTIO (vm) - virtio external interrupt; external interrupt
2409 parameters in parm and parm64
2410KVM_S390_INT_SERVICE (vm) - sclp external interrupt; sclp parameter in parm
2411KVM_S390_INT_EMERGENCY (vcpu) - sigp emergency; source cpu in parm
2412KVM_S390_INT_EXTERNAL_CALL (vcpu) - sigp external call; source cpu in parm
d8346b7d
CH
2413KVM_S390_INT_IO(ai,cssid,ssid,schid) (vm) - compound value to indicate an
2414 I/O interrupt (ai - adapter interrupt; cssid,ssid,schid - subchannel);
2415 I/O interruption parameters in parm (subchannel) and parm64 (intparm,
2416 interruption subclass)
48a3e950
CH
2417KVM_S390_MCHK (vm, vcpu) - machine check interrupt; cr 14 bits in parm,
2418 machine check interrupt code in parm64 (note that
2419 machine checks needing further payload are not
2420 supported by this ioctl)
416ad65f
CH
2421
2422Note that the vcpu ioctl is asynchronous to vcpu execution.
2423
a2932923
PM
24244.78 KVM_PPC_GET_HTAB_FD
2425
2426Capability: KVM_CAP_PPC_HTAB_FD
2427Architectures: powerpc
2428Type: vm ioctl
2429Parameters: Pointer to struct kvm_get_htab_fd (in)
2430Returns: file descriptor number (>= 0) on success, -1 on error
2431
2432This returns a file descriptor that can be used either to read out the
2433entries in the guest's hashed page table (HPT), or to write entries to
2434initialize the HPT. The returned fd can only be written to if the
2435KVM_GET_HTAB_WRITE bit is set in the flags field of the argument, and
2436can only be read if that bit is clear. The argument struct looks like
2437this:
2438
2439/* For KVM_PPC_GET_HTAB_FD */
2440struct kvm_get_htab_fd {
2441 __u64 flags;
2442 __u64 start_index;
2443 __u64 reserved[2];
2444};
2445
2446/* Values for kvm_get_htab_fd.flags */
2447#define KVM_GET_HTAB_BOLTED_ONLY ((__u64)0x1)
2448#define KVM_GET_HTAB_WRITE ((__u64)0x2)
2449
2450The `start_index' field gives the index in the HPT of the entry at
2451which to start reading. It is ignored when writing.
2452
2453Reads on the fd will initially supply information about all
2454"interesting" HPT entries. Interesting entries are those with the
2455bolted bit set, if the KVM_GET_HTAB_BOLTED_ONLY bit is set, otherwise
2456all entries. When the end of the HPT is reached, the read() will
2457return. If read() is called again on the fd, it will start again from
2458the beginning of the HPT, but will only return HPT entries that have
2459changed since they were last read.
2460
2461Data read or written is structured as a header (8 bytes) followed by a
2462series of valid HPT entries (16 bytes) each. The header indicates how
2463many valid HPT entries there are and how many invalid entries follow
2464the valid entries. The invalid entries are not represented explicitly
2465in the stream. The header format is:
2466
2467struct kvm_get_htab_header {
2468 __u32 index;
2469 __u16 n_valid;
2470 __u16 n_invalid;
2471};
2472
2473Writes to the fd create HPT entries starting at the index given in the
2474header; first `n_valid' valid entries with contents from the data
2475written, then `n_invalid' invalid entries, invalidating any previously
2476valid entries found.
2477
852b6d57
SW
24784.79 KVM_CREATE_DEVICE
2479
2480Capability: KVM_CAP_DEVICE_CTRL
2481Type: vm ioctl
2482Parameters: struct kvm_create_device (in/out)
2483Returns: 0 on success, -1 on error
2484Errors:
2485 ENODEV: The device type is unknown or unsupported
2486 EEXIST: Device already created, and this type of device may not
2487 be instantiated multiple times
2488
2489 Other error conditions may be defined by individual device types or
2490 have their standard meanings.
2491
2492Creates an emulated device in the kernel. The file descriptor returned
2493in fd can be used with KVM_SET/GET/HAS_DEVICE_ATTR.
2494
2495If the KVM_CREATE_DEVICE_TEST flag is set, only test whether the
2496device type is supported (not necessarily whether it can be created
2497in the current vm).
2498
2499Individual devices should not define flags. Attributes should be used
2500for specifying any behavior that is not implied by the device type
2501number.
2502
2503struct kvm_create_device {
2504 __u32 type; /* in: KVM_DEV_TYPE_xxx */
2505 __u32 fd; /* out: device handle */
2506 __u32 flags; /* in: KVM_CREATE_DEVICE_xxx */
2507};
2508
25094.80 KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR
2510
f577f6c2
SZ
2511Capability: KVM_CAP_DEVICE_CTRL, KVM_CAP_VM_ATTRIBUTES for vm device,
2512 KVM_CAP_VCPU_ATTRIBUTES for vcpu device
2513Type: device ioctl, vm ioctl, vcpu ioctl
852b6d57
SW
2514Parameters: struct kvm_device_attr
2515Returns: 0 on success, -1 on error
2516Errors:
2517 ENXIO: The group or attribute is unknown/unsupported for this device
f9cbd9b0 2518 or hardware support is missing.
852b6d57
SW
2519 EPERM: The attribute cannot (currently) be accessed this way
2520 (e.g. read-only attribute, or attribute that only makes
2521 sense when the device is in a different state)
2522
2523 Other error conditions may be defined by individual device types.
2524
2525Gets/sets a specified piece of device configuration and/or state. The
2526semantics are device-specific. See individual device documentation in
2527the "devices" directory. As with ONE_REG, the size of the data
2528transferred is defined by the particular attribute.
2529
2530struct kvm_device_attr {
2531 __u32 flags; /* no flags currently defined */
2532 __u32 group; /* device-defined */
2533 __u64 attr; /* group-defined */
2534 __u64 addr; /* userspace address of attr data */
2535};
2536
25374.81 KVM_HAS_DEVICE_ATTR
2538
f577f6c2
SZ
2539Capability: KVM_CAP_DEVICE_CTRL, KVM_CAP_VM_ATTRIBUTES for vm device,
2540 KVM_CAP_VCPU_ATTRIBUTES for vcpu device
2541Type: device ioctl, vm ioctl, vcpu ioctl
852b6d57
SW
2542Parameters: struct kvm_device_attr
2543Returns: 0 on success, -1 on error
2544Errors:
2545 ENXIO: The group or attribute is unknown/unsupported for this device
f9cbd9b0 2546 or hardware support is missing.
852b6d57
SW
2547
2548Tests whether a device supports a particular attribute. A successful
2549return indicates the attribute is implemented. It does not necessarily
2550indicate that the attribute can be read or written in the device's
2551current state. "addr" is ignored.
f36992e3 2552
d8968f1f 25534.82 KVM_ARM_VCPU_INIT
749cf76c
CD
2554
2555Capability: basic
379e04c7 2556Architectures: arm, arm64
749cf76c 2557Type: vcpu ioctl
beb11fc7 2558Parameters: struct kvm_vcpu_init (in)
749cf76c
CD
2559Returns: 0 on success; -1 on error
2560Errors:
2561  EINVAL:    the target is unknown, or the combination of features is invalid.
2562  ENOENT:    a features bit specified is unknown.
2563
2564This tells KVM what type of CPU to present to the guest, and what
2565optional features it should have.  This will cause a reset of the cpu
2566registers to their initial values.  If this is not called, KVM_RUN will
2567return ENOEXEC for that vcpu.
2568
2569Note that because some registers reflect machine topology, all vcpus
2570should be created before this ioctl is invoked.
2571
f7fa034d
CD
2572Userspace can call this function multiple times for a given vcpu, including
2573after the vcpu has been run. This will reset the vcpu to its initial
2574state. All calls to this function after the initial call must use the same
2575target and same set of feature flags, otherwise EINVAL will be returned.
2576
aa024c2f
MZ
2577Possible features:
2578 - KVM_ARM_VCPU_POWER_OFF: Starts the CPU in a power-off state.
3ad8b3de
CD
2579 Depends on KVM_CAP_ARM_PSCI. If not set, the CPU will be powered on
2580 and execute guest code when KVM_RUN is called.
379e04c7
MZ
2581 - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
2582 Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
85bd0ba1
MZ
2583 - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
2584 backward compatible with v0.2) for the CPU.
50bb0c94 2585 Depends on KVM_CAP_ARM_PSCI_0_2.
808e7381
SZ
2586 - KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
2587 Depends on KVM_CAP_ARM_PMU_V3.
aa024c2f 2588
749cf76c 2589
740edfc0
AP
25904.83 KVM_ARM_PREFERRED_TARGET
2591
2592Capability: basic
2593Architectures: arm, arm64
2594Type: vm ioctl
2595Parameters: struct struct kvm_vcpu_init (out)
2596Returns: 0 on success; -1 on error
2597Errors:
a7265fb1 2598 ENODEV: no preferred target available for the host
740edfc0
AP
2599
2600This queries KVM for preferred CPU target type which can be emulated
2601by KVM on underlying host.
2602
2603The ioctl returns struct kvm_vcpu_init instance containing information
2604about preferred CPU target type and recommended features for it. The
2605kvm_vcpu_init->features bitmap returned will have feature bits set if
2606the preferred target recommends setting these features, but this is
2607not mandatory.
2608
2609The information returned by this ioctl can be used to prepare an instance
2610of struct kvm_vcpu_init for KVM_ARM_VCPU_INIT ioctl which will result in
2611in VCPU matching underlying host.
2612
2613
26144.84 KVM_GET_REG_LIST
749cf76c
CD
2615
2616Capability: basic
c2d2c21b 2617Architectures: arm, arm64, mips
749cf76c
CD
2618Type: vcpu ioctl
2619Parameters: struct kvm_reg_list (in/out)
2620Returns: 0 on success; -1 on error
2621Errors:
2622  E2BIG:     the reg index list is too big to fit in the array specified by
2623             the user (the number required will be written into n).
2624
2625struct kvm_reg_list {
2626 __u64 n; /* number of registers in reg[] */
2627 __u64 reg[0];
2628};
2629
2630This ioctl returns the guest registers that are supported for the
2631KVM_GET_ONE_REG/KVM_SET_ONE_REG calls.
2632
ce01e4e8
CD
2633
26344.85 KVM_ARM_SET_DEVICE_ADDR (deprecated)
3401d546
CD
2635
2636Capability: KVM_CAP_ARM_SET_DEVICE_ADDR
379e04c7 2637Architectures: arm, arm64
3401d546
CD
2638Type: vm ioctl
2639Parameters: struct kvm_arm_device_address (in)
2640Returns: 0 on success, -1 on error
2641Errors:
2642 ENODEV: The device id is unknown
2643 ENXIO: Device not supported on current system
2644 EEXIST: Address already set
2645 E2BIG: Address outside guest physical address space
330690cd 2646 EBUSY: Address overlaps with other device range
3401d546
CD
2647
2648struct kvm_arm_device_addr {
2649 __u64 id;
2650 __u64 addr;
2651};
2652
2653Specify a device address in the guest's physical address space where guests
2654can access emulated or directly exposed devices, which the host kernel needs
2655to know about. The id field is an architecture specific identifier for a
2656specific device.
2657
379e04c7
MZ
2658ARM/arm64 divides the id field into two parts, a device id and an
2659address type id specific to the individual device.
3401d546
CD
2660
2661  bits: | 63 ... 32 | 31 ... 16 | 15 ... 0 |
2662 field: | 0x00000000 | device id | addr type id |
2663
379e04c7
MZ
2664ARM/arm64 currently only require this when using the in-kernel GIC
2665support for the hardware VGIC features, using KVM_ARM_DEVICE_VGIC_V2
2666as the device id. When setting the base address for the guest's
2667mapping of the VGIC virtual CPU and distributor interface, the ioctl
2668must be called after calling KVM_CREATE_IRQCHIP, but before calling
2669KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the
2670base addresses will return -EEXIST.
3401d546 2671
ce01e4e8
CD
2672Note, this IOCTL is deprecated and the more flexible SET/GET_DEVICE_ATTR API
2673should be used instead.
2674
2675
740edfc0 26764.86 KVM_PPC_RTAS_DEFINE_TOKEN
8e591cb7
ME
2677
2678Capability: KVM_CAP_PPC_RTAS
2679Architectures: ppc
2680Type: vm ioctl
2681Parameters: struct kvm_rtas_token_args
2682Returns: 0 on success, -1 on error
2683
2684Defines a token value for a RTAS (Run Time Abstraction Services)
2685service in order to allow it to be handled in the kernel. The
2686argument struct gives the name of the service, which must be the name
2687of a service that has a kernel-side implementation. If the token
2688value is non-zero, it will be associated with that service, and
2689subsequent RTAS calls by the guest specifying that token will be
2690handled by the kernel. If the token value is 0, then any token
2691associated with the service will be forgotten, and subsequent RTAS
2692calls by the guest for that service will be passed to userspace to be
2693handled.
2694
4bd9d344
AB
26954.87 KVM_SET_GUEST_DEBUG
2696
2697Capability: KVM_CAP_SET_GUEST_DEBUG
0e6f07f2 2698Architectures: x86, s390, ppc, arm64
4bd9d344
AB
2699Type: vcpu ioctl
2700Parameters: struct kvm_guest_debug (in)
2701Returns: 0 on success; -1 on error
2702
2703struct kvm_guest_debug {
2704 __u32 control;
2705 __u32 pad;
2706 struct kvm_guest_debug_arch arch;
2707};
2708
2709Set up the processor specific debug registers and configure vcpu for
2710handling guest debug events. There are two parts to the structure, the
2711first a control bitfield indicates the type of debug events to handle
2712when running. Common control bits are:
2713
2714 - KVM_GUESTDBG_ENABLE: guest debugging is enabled
2715 - KVM_GUESTDBG_SINGLESTEP: the next run should single-step
2716
2717The top 16 bits of the control field are architecture specific control
2718flags which can include the following:
2719
4bd611ca 2720 - KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86, arm64]
834bf887 2721 - KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390, arm64]
4bd9d344
AB
2722 - KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
2723 - KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
2724 - KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
2725
2726For example KVM_GUESTDBG_USE_SW_BP indicates that software breakpoints
2727are enabled in memory so we need to ensure breakpoint exceptions are
2728correctly trapped and the KVM run loop exits at the breakpoint and not
2729running off into the normal guest vector. For KVM_GUESTDBG_USE_HW_BP
2730we need to ensure the guest vCPUs architecture specific registers are
2731updated to the correct (supplied) values.
2732
2733The second part of the structure is architecture specific and
2734typically contains a set of debug registers.
2735
834bf887
AB
2736For arm64 the number of debug registers is implementation defined and
2737can be determined by querying the KVM_CAP_GUEST_DEBUG_HW_BPS and
2738KVM_CAP_GUEST_DEBUG_HW_WPS capabilities which return a positive number
2739indicating the number of supported registers.
2740
4bd9d344
AB
2741When debug events exit the main run loop with the reason
2742KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
2743structure containing architecture specific debug information.
3401d546 2744
209cf19f
AB
27454.88 KVM_GET_EMULATED_CPUID
2746
2747Capability: KVM_CAP_EXT_EMUL_CPUID
2748Architectures: x86
2749Type: system ioctl
2750Parameters: struct kvm_cpuid2 (in/out)
2751Returns: 0 on success, -1 on error
2752
2753struct kvm_cpuid2 {
2754 __u32 nent;
2755 __u32 flags;
2756 struct kvm_cpuid_entry2 entries[0];
2757};
2758
2759The member 'flags' is used for passing flags from userspace.
2760
2761#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
2762#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
2763#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
2764
2765struct kvm_cpuid_entry2 {
2766 __u32 function;
2767 __u32 index;
2768 __u32 flags;
2769 __u32 eax;
2770 __u32 ebx;
2771 __u32 ecx;
2772 __u32 edx;
2773 __u32 padding[3];
2774};
2775
2776This ioctl returns x86 cpuid features which are emulated by
2777kvm.Userspace can use the information returned by this ioctl to query
2778which features are emulated by kvm instead of being present natively.
2779
2780Userspace invokes KVM_GET_EMULATED_CPUID by passing a kvm_cpuid2
2781structure with the 'nent' field indicating the number of entries in
2782the variable-size array 'entries'. If the number of entries is too low
2783to describe the cpu capabilities, an error (E2BIG) is returned. If the
2784number is too high, the 'nent' field is adjusted and an error (ENOMEM)
2785is returned. If the number is just right, the 'nent' field is adjusted
2786to the number of valid entries in the 'entries' array, which is then
2787filled.
2788
2789The entries returned are the set CPUID bits of the respective features
2790which kvm emulates, as returned by the CPUID instruction, with unknown
2791or unsupported feature bits cleared.
2792
2793Features like x2apic, for example, may not be present in the host cpu
2794but are exposed by kvm in KVM_GET_SUPPORTED_CPUID because they can be
2795emulated efficiently and thus not included here.
2796
2797The fields in each entry are defined as follows:
2798
2799 function: the eax value used to obtain the entry
2800 index: the ecx value used to obtain the entry (for entries that are
2801 affected by ecx)
2802 flags: an OR of zero or more of the following:
2803 KVM_CPUID_FLAG_SIGNIFCANT_INDEX:
2804 if the index field is valid
2805 KVM_CPUID_FLAG_STATEFUL_FUNC:
2806 if cpuid for this function returns different values for successive
2807 invocations; there will be several entries with the same function,
2808 all with this flag set
2809 KVM_CPUID_FLAG_STATE_READ_NEXT:
2810 for KVM_CPUID_FLAG_STATEFUL_FUNC entries, set if this entry is
2811 the first entry to be read by a cpu
2812 eax, ebx, ecx, edx: the values returned by the cpuid instruction for
2813 this function/index combination
2814
41408c28
TH
28154.89 KVM_S390_MEM_OP
2816
2817Capability: KVM_CAP_S390_MEM_OP
2818Architectures: s390
2819Type: vcpu ioctl
2820Parameters: struct kvm_s390_mem_op (in)
2821Returns: = 0 on success,
2822 < 0 on generic error (e.g. -EFAULT or -ENOMEM),
2823 > 0 if an exception occurred while walking the page tables
2824
5d4f6f3d 2825Read or write data from/to the logical (virtual) memory of a VCPU.
41408c28
TH
2826
2827Parameters are specified via the following structure:
2828
2829struct kvm_s390_mem_op {
2830 __u64 gaddr; /* the guest address */
2831 __u64 flags; /* flags */
2832 __u32 size; /* amount of bytes */
2833 __u32 op; /* type of operation */
2834 __u64 buf; /* buffer in userspace */
2835 __u8 ar; /* the access register number */
2836 __u8 reserved[31]; /* should be set to 0 */
2837};
2838
2839The type of operation is specified in the "op" field. It is either
2840KVM_S390_MEMOP_LOGICAL_READ for reading from logical memory space or
2841KVM_S390_MEMOP_LOGICAL_WRITE for writing to logical memory space. The
2842KVM_S390_MEMOP_F_CHECK_ONLY flag can be set in the "flags" field to check
2843whether the corresponding memory access would create an access exception
2844(without touching the data in the memory at the destination). In case an
2845access exception occurred while walking the MMU tables of the guest, the
2846ioctl returns a positive error number to indicate the type of exception.
2847This exception is also raised directly at the corresponding VCPU if the
2848flag KVM_S390_MEMOP_F_INJECT_EXCEPTION is set in the "flags" field.
2849
2850The start address of the memory region has to be specified in the "gaddr"
2851field, and the length of the region in the "size" field. "buf" is the buffer
2852supplied by the userspace application where the read data should be written
2853to for KVM_S390_MEMOP_LOGICAL_READ, or where the data that should be written
2854is stored for a KVM_S390_MEMOP_LOGICAL_WRITE. "buf" is unused and can be NULL
2855when KVM_S390_MEMOP_F_CHECK_ONLY is specified. "ar" designates the access
2856register number to be used.
2857
2858The "reserved" field is meant for future extensions. It is not used by
2859KVM with the currently defined set of flags.
2860
30ee2a98
JH
28614.90 KVM_S390_GET_SKEYS
2862
2863Capability: KVM_CAP_S390_SKEYS
2864Architectures: s390
2865Type: vm ioctl
2866Parameters: struct kvm_s390_skeys
2867Returns: 0 on success, KVM_S390_GET_KEYS_NONE if guest is not using storage
2868 keys, negative value on error
2869
2870This ioctl is used to get guest storage key values on the s390
2871architecture. The ioctl takes parameters via the kvm_s390_skeys struct.
2872
2873struct kvm_s390_skeys {
2874 __u64 start_gfn;
2875 __u64 count;
2876 __u64 skeydata_addr;
2877 __u32 flags;
2878 __u32 reserved[9];
2879};
2880
2881The start_gfn field is the number of the first guest frame whose storage keys
2882you want to get.
2883
2884The count field is the number of consecutive frames (starting from start_gfn)
2885whose storage keys to get. The count field must be at least 1 and the maximum
2886allowed value is defined as KVM_S390_SKEYS_ALLOC_MAX. Values outside this range
2887will cause the ioctl to return -EINVAL.
2888
2889The skeydata_addr field is the address to a buffer large enough to hold count
2890bytes. This buffer will be filled with storage key data by the ioctl.
2891
28924.91 KVM_S390_SET_SKEYS
2893
2894Capability: KVM_CAP_S390_SKEYS
2895Architectures: s390
2896Type: vm ioctl
2897Parameters: struct kvm_s390_skeys
2898Returns: 0 on success, negative value on error
2899
2900This ioctl is used to set guest storage key values on the s390
2901architecture. The ioctl takes parameters via the kvm_s390_skeys struct.
2902See section on KVM_S390_GET_SKEYS for struct definition.
2903
2904The start_gfn field is the number of the first guest frame whose storage keys
2905you want to set.
2906
2907The count field is the number of consecutive frames (starting from start_gfn)
2908whose storage keys to get. The count field must be at least 1 and the maximum
2909allowed value is defined as KVM_S390_SKEYS_ALLOC_MAX. Values outside this range
2910will cause the ioctl to return -EINVAL.
2911
2912The skeydata_addr field is the address to a buffer containing count bytes of
2913storage keys. Each byte in the buffer will be set as the storage key for a
2914single frame starting at start_gfn for count frames.
2915
2916Note: If any architecturally invalid key value is found in the given data then
2917the ioctl will return -EINVAL.
2918
47b43c52
JF
29194.92 KVM_S390_IRQ
2920
2921Capability: KVM_CAP_S390_INJECT_IRQ
2922Architectures: s390
2923Type: vcpu ioctl
2924Parameters: struct kvm_s390_irq (in)
2925Returns: 0 on success, -1 on error
2926Errors:
2927 EINVAL: interrupt type is invalid
2928 type is KVM_S390_SIGP_STOP and flag parameter is invalid value
2929 type is KVM_S390_INT_EXTERNAL_CALL and code is bigger
2930 than the maximum of VCPUs
2931 EBUSY: type is KVM_S390_SIGP_SET_PREFIX and vcpu is not stopped
2932 type is KVM_S390_SIGP_STOP and a stop irq is already pending
2933 type is KVM_S390_INT_EXTERNAL_CALL and an external call interrupt
2934 is already pending
2935
2936Allows to inject an interrupt to the guest.
2937
2938Using struct kvm_s390_irq as a parameter allows
2939to inject additional payload which is not
2940possible via KVM_S390_INTERRUPT.
2941
2942Interrupt parameters are passed via kvm_s390_irq:
2943
2944struct kvm_s390_irq {
2945 __u64 type;
2946 union {
2947 struct kvm_s390_io_info io;
2948 struct kvm_s390_ext_info ext;
2949 struct kvm_s390_pgm_info pgm;
2950 struct kvm_s390_emerg_info emerg;
2951 struct kvm_s390_extcall_info extcall;
2952 struct kvm_s390_prefix_info prefix;
2953 struct kvm_s390_stop_info stop;
2954 struct kvm_s390_mchk_info mchk;
2955 char reserved[64];
2956 } u;
2957};
2958
2959type can be one of the following:
2960
2961KVM_S390_SIGP_STOP - sigp stop; parameter in .stop
2962KVM_S390_PROGRAM_INT - program check; parameters in .pgm
2963KVM_S390_SIGP_SET_PREFIX - sigp set prefix; parameters in .prefix
2964KVM_S390_RESTART - restart; no parameters
2965KVM_S390_INT_CLOCK_COMP - clock comparator interrupt; no parameters
2966KVM_S390_INT_CPU_TIMER - CPU timer interrupt; no parameters
2967KVM_S390_INT_EMERGENCY - sigp emergency; parameters in .emerg
2968KVM_S390_INT_EXTERNAL_CALL - sigp external call; parameters in .extcall
2969KVM_S390_MCHK - machine check interrupt; parameters in .mchk
2970
2971
2972Note that the vcpu ioctl is asynchronous to vcpu execution.
2973
816c7667
JF
29744.94 KVM_S390_GET_IRQ_STATE
2975
2976Capability: KVM_CAP_S390_IRQ_STATE
2977Architectures: s390
2978Type: vcpu ioctl
2979Parameters: struct kvm_s390_irq_state (out)
2980Returns: >= number of bytes copied into buffer,
2981 -EINVAL if buffer size is 0,
2982 -ENOBUFS if buffer size is too small to fit all pending interrupts,
2983 -EFAULT if the buffer address was invalid
2984
2985This ioctl allows userspace to retrieve the complete state of all currently
2986pending interrupts in a single buffer. Use cases include migration
2987and introspection. The parameter structure contains the address of a
2988userspace buffer and its length:
2989
2990struct kvm_s390_irq_state {
2991 __u64 buf;
bb64da9a 2992 __u32 flags; /* will stay unused for compatibility reasons */
816c7667 2993 __u32 len;
bb64da9a 2994 __u32 reserved[4]; /* will stay unused for compatibility reasons */
816c7667
JF
2995};
2996
2997Userspace passes in the above struct and for each pending interrupt a
2998struct kvm_s390_irq is copied to the provided buffer.
2999
bb64da9a
CB
3000The structure contains a flags and a reserved field for future extensions. As
3001the kernel never checked for flags == 0 and QEMU never pre-zeroed flags and
3002reserved, these fields can not be used in the future without breaking
3003compatibility.
3004
816c7667
JF
3005If -ENOBUFS is returned the buffer provided was too small and userspace
3006may retry with a bigger buffer.
3007
30084.95 KVM_S390_SET_IRQ_STATE
3009
3010Capability: KVM_CAP_S390_IRQ_STATE
3011Architectures: s390
3012Type: vcpu ioctl
3013Parameters: struct kvm_s390_irq_state (in)
3014Returns: 0 on success,
3015 -EFAULT if the buffer address was invalid,
3016 -EINVAL for an invalid buffer length (see below),
3017 -EBUSY if there were already interrupts pending,
3018 errors occurring when actually injecting the
3019 interrupt. See KVM_S390_IRQ.
3020
3021This ioctl allows userspace to set the complete state of all cpu-local
3022interrupts currently pending for the vcpu. It is intended for restoring
3023interrupt state after a migration. The input parameter is a userspace buffer
3024containing a struct kvm_s390_irq_state:
3025
3026struct kvm_s390_irq_state {
3027 __u64 buf;
bb64da9a 3028 __u32 flags; /* will stay unused for compatibility reasons */
816c7667 3029 __u32 len;
bb64da9a 3030 __u32 reserved[4]; /* will stay unused for compatibility reasons */
816c7667
JF
3031};
3032
bb64da9a
CB
3033The restrictions for flags and reserved apply as well.
3034(see KVM_S390_GET_IRQ_STATE)
3035
816c7667
JF
3036The userspace memory referenced by buf contains a struct kvm_s390_irq
3037for each interrupt to be injected into the guest.
3038If one of the interrupts could not be injected for some reason the
3039ioctl aborts.
3040
3041len must be a multiple of sizeof(struct kvm_s390_irq). It must be > 0
3042and it must not exceed (max_vcpus + 32) * sizeof(struct kvm_s390_irq),
3043which is the maximum number of possibly pending cpu-local interrupts.
47b43c52 3044
ed8e5a24 30454.96 KVM_SMI
f077825a
PB
3046
3047Capability: KVM_CAP_X86_SMM
3048Architectures: x86
3049Type: vcpu ioctl
3050Parameters: none
3051Returns: 0 on success, -1 on error
3052
3053Queues an SMI on the thread's vcpu.
3054
d3695aa4
AK
30554.97 KVM_CAP_PPC_MULTITCE
3056
3057Capability: KVM_CAP_PPC_MULTITCE
3058Architectures: ppc
3059Type: vm
3060
3061This capability means the kernel is capable of handling hypercalls
3062H_PUT_TCE_INDIRECT and H_STUFF_TCE without passing those into the user
3063space. This significantly accelerates DMA operations for PPC KVM guests.
3064User space should expect that its handlers for these hypercalls
3065are not going to be called if user space previously registered LIOBN
3066in KVM (via KVM_CREATE_SPAPR_TCE or similar calls).
3067
3068In order to enable H_PUT_TCE_INDIRECT and H_STUFF_TCE use in the guest,
3069user space might have to advertise it for the guest. For example,
3070IBM pSeries (sPAPR) guest starts using them if "hcall-multi-tce" is
3071present in the "ibm,hypertas-functions" device-tree property.
3072
3073The hypercalls mentioned above may or may not be processed successfully
3074in the kernel based fast path. If they can not be handled by the kernel,
3075they will get passed on to user space. So user space still has to have
3076an implementation for these despite the in kernel acceleration.
3077
3078This capability is always enabled.
3079
58ded420
AK
30804.98 KVM_CREATE_SPAPR_TCE_64
3081
3082Capability: KVM_CAP_SPAPR_TCE_64
3083Architectures: powerpc
3084Type: vm ioctl
3085Parameters: struct kvm_create_spapr_tce_64 (in)
3086Returns: file descriptor for manipulating the created TCE table
3087
3088This is an extension for KVM_CAP_SPAPR_TCE which only supports 32bit
3089windows, described in 4.62 KVM_CREATE_SPAPR_TCE
3090
3091This capability uses extended struct in ioctl interface:
3092
3093/* for KVM_CAP_SPAPR_TCE_64 */
3094struct kvm_create_spapr_tce_64 {
3095 __u64 liobn;
3096 __u32 page_shift;
3097 __u32 flags;
3098 __u64 offset; /* in pages */
3099 __u64 size; /* in pages */
3100};
3101
3102The aim of extension is to support an additional bigger DMA window with
3103a variable page size.
3104KVM_CREATE_SPAPR_TCE_64 receives a 64bit window size, an IOMMU page shift and
3105a bus offset of the corresponding DMA window, @size and @offset are numbers
3106of IOMMU pages.
3107
3108@flags are not used at the moment.
3109
3110The rest of functionality is identical to KVM_CREATE_SPAPR_TCE.
3111
ccc4df4e 31124.99 KVM_REINJECT_CONTROL
107d44a2
RK
3113
3114Capability: KVM_CAP_REINJECT_CONTROL
3115Architectures: x86
3116Type: vm ioctl
3117Parameters: struct kvm_reinject_control (in)
3118Returns: 0 on success,
3119 -EFAULT if struct kvm_reinject_control cannot be read,
3120 -ENXIO if KVM_CREATE_PIT or KVM_CREATE_PIT2 didn't succeed earlier.
3121
3122i8254 (PIT) has two modes, reinject and !reinject. The default is reinject,
3123where KVM queues elapsed i8254 ticks and monitors completion of interrupt from
3124vector(s) that i8254 injects. Reinject mode dequeues a tick and injects its
3125interrupt whenever there isn't a pending interrupt from i8254.
3126!reinject mode injects an interrupt as soon as a tick arrives.
3127
3128struct kvm_reinject_control {
3129 __u8 pit_reinject;
3130 __u8 reserved[31];
3131};
3132
3133pit_reinject = 0 (!reinject mode) is recommended, unless running an old
3134operating system that uses the PIT for timing (e.g. Linux 2.4.x).
3135
ccc4df4e 31364.100 KVM_PPC_CONFIGURE_V3_MMU
c9270132
PM
3137
3138Capability: KVM_CAP_PPC_RADIX_MMU or KVM_CAP_PPC_HASH_MMU_V3
3139Architectures: ppc
3140Type: vm ioctl
3141Parameters: struct kvm_ppc_mmuv3_cfg (in)
3142Returns: 0 on success,
3143 -EFAULT if struct kvm_ppc_mmuv3_cfg cannot be read,
3144 -EINVAL if the configuration is invalid
3145
3146This ioctl controls whether the guest will use radix or HPT (hashed
3147page table) translation, and sets the pointer to the process table for
3148the guest.
3149
3150struct kvm_ppc_mmuv3_cfg {
3151 __u64 flags;
3152 __u64 process_table;
3153};
3154
3155There are two bits that can be set in flags; KVM_PPC_MMUV3_RADIX and
3156KVM_PPC_MMUV3_GTSE. KVM_PPC_MMUV3_RADIX, if set, configures the guest
3157to use radix tree translation, and if clear, to use HPT translation.
3158KVM_PPC_MMUV3_GTSE, if set and if KVM permits it, configures the guest
3159to be able to use the global TLB and SLB invalidation instructions;
3160if clear, the guest may not use these instructions.
3161
3162The process_table field specifies the address and size of the guest
3163process table, which is in the guest's space. This field is formatted
3164as the second doubleword of the partition table entry, as defined in
3165the Power ISA V3.00, Book III section 5.7.6.1.
3166
ccc4df4e 31674.101 KVM_PPC_GET_RMMU_INFO
c9270132
PM
3168
3169Capability: KVM_CAP_PPC_RADIX_MMU
3170Architectures: ppc
3171Type: vm ioctl
3172Parameters: struct kvm_ppc_rmmu_info (out)
3173Returns: 0 on success,
3174 -EFAULT if struct kvm_ppc_rmmu_info cannot be written,
3175 -EINVAL if no useful information can be returned
3176
3177This ioctl returns a structure containing two things: (a) a list
3178containing supported radix tree geometries, and (b) a list that maps
3179page sizes to put in the "AP" (actual page size) field for the tlbie
3180(TLB invalidate entry) instruction.
3181
3182struct kvm_ppc_rmmu_info {
3183 struct kvm_ppc_radix_geom {
3184 __u8 page_shift;
3185 __u8 level_bits[4];
3186 __u8 pad[3];
3187 } geometries[8];
3188 __u32 ap_encodings[8];
3189};
3190
3191The geometries[] field gives up to 8 supported geometries for the
3192radix page table, in terms of the log base 2 of the smallest page
3193size, and the number of bits indexed at each level of the tree, from
3194the PTE level up to the PGD level in that order. Any unused entries
3195will have 0 in the page_shift field.
3196
3197The ap_encodings gives the supported page sizes and their AP field
3198encodings, encoded with the AP value in the top 3 bits and the log
3199base 2 of the page size in the bottom 6 bits.
3200
ef1ead0c
DG
32014.102 KVM_PPC_RESIZE_HPT_PREPARE
3202
3203Capability: KVM_CAP_SPAPR_RESIZE_HPT
3204Architectures: powerpc
3205Type: vm ioctl
3206Parameters: struct kvm_ppc_resize_hpt (in)
3207Returns: 0 on successful completion,
3208 >0 if a new HPT is being prepared, the value is an estimated
3209 number of milliseconds until preparation is complete
3210 -EFAULT if struct kvm_reinject_control cannot be read,
3211 -EINVAL if the supplied shift or flags are invalid
3212 -ENOMEM if unable to allocate the new HPT
3213 -ENOSPC if there was a hash collision when moving existing
3214 HPT entries to the new HPT
3215 -EIO on other error conditions
3216
3217Used to implement the PAPR extension for runtime resizing of a guest's
3218Hashed Page Table (HPT). Specifically this starts, stops or monitors
3219the preparation of a new potential HPT for the guest, essentially
3220implementing the H_RESIZE_HPT_PREPARE hypercall.
3221
3222If called with shift > 0 when there is no pending HPT for the guest,
3223this begins preparation of a new pending HPT of size 2^(shift) bytes.
3224It then returns a positive integer with the estimated number of
3225milliseconds until preparation is complete.
3226
3227If called when there is a pending HPT whose size does not match that
3228requested in the parameters, discards the existing pending HPT and
3229creates a new one as above.
3230
3231If called when there is a pending HPT of the size requested, will:
3232 * If preparation of the pending HPT is already complete, return 0
3233 * If preparation of the pending HPT has failed, return an error
3234 code, then discard the pending HPT.
3235 * If preparation of the pending HPT is still in progress, return an
3236 estimated number of milliseconds until preparation is complete.
3237
3238If called with shift == 0, discards any currently pending HPT and
3239returns 0 (i.e. cancels any in-progress preparation).
3240
3241flags is reserved for future expansion, currently setting any bits in
3242flags will result in an -EINVAL.
3243
3244Normally this will be called repeatedly with the same parameters until
3245it returns <= 0. The first call will initiate preparation, subsequent
3246ones will monitor preparation until it completes or fails.
3247
3248struct kvm_ppc_resize_hpt {
3249 __u64 flags;
3250 __u32 shift;
3251 __u32 pad;
3252};
3253
32544.103 KVM_PPC_RESIZE_HPT_COMMIT
3255
3256Capability: KVM_CAP_SPAPR_RESIZE_HPT
3257Architectures: powerpc
3258Type: vm ioctl
3259Parameters: struct kvm_ppc_resize_hpt (in)
3260Returns: 0 on successful completion,
3261 -EFAULT if struct kvm_reinject_control cannot be read,
3262 -EINVAL if the supplied shift or flags are invalid
3263 -ENXIO is there is no pending HPT, or the pending HPT doesn't
3264 have the requested size
3265 -EBUSY if the pending HPT is not fully prepared
3266 -ENOSPC if there was a hash collision when moving existing
3267 HPT entries to the new HPT
3268 -EIO on other error conditions
3269
3270Used to implement the PAPR extension for runtime resizing of a guest's
3271Hashed Page Table (HPT). Specifically this requests that the guest be
3272transferred to working with the new HPT, essentially implementing the
3273H_RESIZE_HPT_COMMIT hypercall.
3274
3275This should only be called after KVM_PPC_RESIZE_HPT_PREPARE has
3276returned 0 with the same parameters. In other cases
3277KVM_PPC_RESIZE_HPT_COMMIT will return an error (usually -ENXIO or
3278-EBUSY, though others may be possible if the preparation was started,
3279but failed).
3280
3281This will have undefined effects on the guest if it has not already
3282placed itself in a quiescent state where no vcpu will make MMU enabled
3283memory accesses.
3284
3285On succsful completion, the pending HPT will become the guest's active
3286HPT and the previous HPT will be discarded.
3287
3288On failure, the guest will still be operating on its previous HPT.
3289
3290struct kvm_ppc_resize_hpt {
3291 __u64 flags;
3292 __u32 shift;
3293 __u32 pad;
3294};
3295
3aa53859
LC
32964.104 KVM_X86_GET_MCE_CAP_SUPPORTED
3297
3298Capability: KVM_CAP_MCE
3299Architectures: x86
3300Type: system ioctl
3301Parameters: u64 mce_cap (out)
3302Returns: 0 on success, -1 on error
3303
3304Returns supported MCE capabilities. The u64 mce_cap parameter
3305has the same format as the MSR_IA32_MCG_CAP register. Supported
3306capabilities will have the corresponding bits set.
3307
33084.105 KVM_X86_SETUP_MCE
3309
3310Capability: KVM_CAP_MCE
3311Architectures: x86
3312Type: vcpu ioctl
3313Parameters: u64 mcg_cap (in)
3314Returns: 0 on success,
3315 -EFAULT if u64 mcg_cap cannot be read,
3316 -EINVAL if the requested number of banks is invalid,
3317 -EINVAL if requested MCE capability is not supported.
3318
3319Initializes MCE support for use. The u64 mcg_cap parameter
3320has the same format as the MSR_IA32_MCG_CAP register and
3321specifies which capabilities should be enabled. The maximum
3322supported number of error-reporting banks can be retrieved when
3323checking for KVM_CAP_MCE. The supported capabilities can be
3324retrieved with KVM_X86_GET_MCE_CAP_SUPPORTED.
3325
33264.106 KVM_X86_SET_MCE
3327
3328Capability: KVM_CAP_MCE
3329Architectures: x86
3330Type: vcpu ioctl
3331Parameters: struct kvm_x86_mce (in)
3332Returns: 0 on success,
3333 -EFAULT if struct kvm_x86_mce cannot be read,
3334 -EINVAL if the bank number is invalid,
3335 -EINVAL if VAL bit is not set in status field.
3336
3337Inject a machine check error (MCE) into the guest. The input
3338parameter is:
3339
3340struct kvm_x86_mce {
3341 __u64 status;
3342 __u64 addr;
3343 __u64 misc;
3344 __u64 mcg_status;
3345 __u8 bank;
3346 __u8 pad1[7];
3347 __u64 pad2[3];
3348};
3349
3350If the MCE being reported is an uncorrected error, KVM will
3351inject it as an MCE exception into the guest. If the guest
3352MCG_STATUS register reports that an MCE is in progress, KVM
3353causes an KVM_EXIT_SHUTDOWN vmexit.
3354
3355Otherwise, if the MCE is a corrected error, KVM will just
3356store it in the corresponding bank (provided this bank is
3357not holding a previously reported uncorrected error).
3358
4036e387
CI
33594.107 KVM_S390_GET_CMMA_BITS
3360
3361Capability: KVM_CAP_S390_CMMA_MIGRATION
3362Architectures: s390
3363Type: vm ioctl
3364Parameters: struct kvm_s390_cmma_log (in, out)
3365Returns: 0 on success, a negative value on error
3366
3367This ioctl is used to get the values of the CMMA bits on the s390
3368architecture. It is meant to be used in two scenarios:
3369- During live migration to save the CMMA values. Live migration needs
3370 to be enabled via the KVM_REQ_START_MIGRATION VM property.
3371- To non-destructively peek at the CMMA values, with the flag
3372 KVM_S390_CMMA_PEEK set.
3373
3374The ioctl takes parameters via the kvm_s390_cmma_log struct. The desired
3375values are written to a buffer whose location is indicated via the "values"
3376member in the kvm_s390_cmma_log struct. The values in the input struct are
3377also updated as needed.
3378Each CMMA value takes up one byte.
3379
3380struct kvm_s390_cmma_log {
3381 __u64 start_gfn;
3382 __u32 count;
3383 __u32 flags;
3384 union {
3385 __u64 remaining;
3386 __u64 mask;
3387 };
3388 __u64 values;
3389};
3390
3391start_gfn is the number of the first guest frame whose CMMA values are
3392to be retrieved,
3393
3394count is the length of the buffer in bytes,
3395
3396values points to the buffer where the result will be written to.
3397
3398If count is greater than KVM_S390_SKEYS_MAX, then it is considered to be
3399KVM_S390_SKEYS_MAX. KVM_S390_SKEYS_MAX is re-used for consistency with
3400other ioctls.
3401
3402The result is written in the buffer pointed to by the field values, and
3403the values of the input parameter are updated as follows.
3404
3405Depending on the flags, different actions are performed. The only
3406supported flag so far is KVM_S390_CMMA_PEEK.
3407
3408The default behaviour if KVM_S390_CMMA_PEEK is not set is:
3409start_gfn will indicate the first page frame whose CMMA bits were dirty.
3410It is not necessarily the same as the one passed as input, as clean pages
3411are skipped.
3412
3413count will indicate the number of bytes actually written in the buffer.
3414It can (and very often will) be smaller than the input value, since the
3415buffer is only filled until 16 bytes of clean values are found (which
3416are then not copied in the buffer). Since a CMMA migration block needs
3417the base address and the length, for a total of 16 bytes, we will send
3418back some clean data if there is some dirty data afterwards, as long as
3419the size of the clean data does not exceed the size of the header. This
3420allows to minimize the amount of data to be saved or transferred over
3421the network at the expense of more roundtrips to userspace. The next
3422invocation of the ioctl will skip over all the clean values, saving
3423potentially more than just the 16 bytes we found.
3424
3425If KVM_S390_CMMA_PEEK is set:
3426the existing storage attributes are read even when not in migration
3427mode, and no other action is performed;
3428
3429the output start_gfn will be equal to the input start_gfn,
3430
3431the output count will be equal to the input count, except if the end of
3432memory has been reached.
3433
3434In both cases:
3435the field "remaining" will indicate the total number of dirty CMMA values
3436still remaining, or 0 if KVM_S390_CMMA_PEEK is set and migration mode is
3437not enabled.
3438
3439mask is unused.
3440
3441values points to the userspace buffer where the result will be stored.
3442
3443This ioctl can fail with -ENOMEM if not enough memory can be allocated to
3444complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
3445KVM_S390_CMMA_PEEK is not set but migration mode was not enabled, with
3446-EFAULT if the userspace address is invalid or if no page table is
3447present for the addresses (e.g. when using hugepages).
3448
34494.108 KVM_S390_SET_CMMA_BITS
3450
3451Capability: KVM_CAP_S390_CMMA_MIGRATION
3452Architectures: s390
3453Type: vm ioctl
3454Parameters: struct kvm_s390_cmma_log (in)
3455Returns: 0 on success, a negative value on error
3456
3457This ioctl is used to set the values of the CMMA bits on the s390
3458architecture. It is meant to be used during live migration to restore
3459the CMMA values, but there are no restrictions on its use.
3460The ioctl takes parameters via the kvm_s390_cmma_values struct.
3461Each CMMA value takes up one byte.
3462
3463struct kvm_s390_cmma_log {
3464 __u64 start_gfn;
3465 __u32 count;
3466 __u32 flags;
3467 union {
3468 __u64 remaining;
3469 __u64 mask;
3470 };
3471 __u64 values;
3472};
3473
3474start_gfn indicates the starting guest frame number,
3475
3476count indicates how many values are to be considered in the buffer,
3477
3478flags is not used and must be 0.
3479
3480mask indicates which PGSTE bits are to be considered.
3481
3482remaining is not used.
3483
3484values points to the buffer in userspace where to store the values.
3485
3486This ioctl can fail with -ENOMEM if not enough memory can be allocated to
3487complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
3488the count field is too large (e.g. more than KVM_S390_CMMA_SIZE_MAX) or
3489if the flags field was not 0, with -EFAULT if the userspace address is
3490invalid, if invalid pages are written to (e.g. after the end of memory)
3491or if no page table is present for the addresses (e.g. when using
3492hugepages).
3493
7bf14c28 34944.109 KVM_PPC_GET_CPU_CHAR
3214d01f
PM
3495
3496Capability: KVM_CAP_PPC_GET_CPU_CHAR
3497Architectures: powerpc
3498Type: vm ioctl
3499Parameters: struct kvm_ppc_cpu_char (out)
3500Returns: 0 on successful completion
3501 -EFAULT if struct kvm_ppc_cpu_char cannot be written
3502
3503This ioctl gives userspace information about certain characteristics
3504of the CPU relating to speculative execution of instructions and
3505possible information leakage resulting from speculative execution (see
3506CVE-2017-5715, CVE-2017-5753 and CVE-2017-5754). The information is
3507returned in struct kvm_ppc_cpu_char, which looks like this:
3508
3509struct kvm_ppc_cpu_char {
3510 __u64 character; /* characteristics of the CPU */
3511 __u64 behaviour; /* recommended software behaviour */
3512 __u64 character_mask; /* valid bits in character */
3513 __u64 behaviour_mask; /* valid bits in behaviour */
3514};
3515
3516For extensibility, the character_mask and behaviour_mask fields
3517indicate which bits of character and behaviour have been filled in by
3518the kernel. If the set of defined bits is extended in future then
3519userspace will be able to tell whether it is running on a kernel that
3520knows about the new bits.
3521
3522The character field describes attributes of the CPU which can help
3523with preventing inadvertent information disclosure - specifically,
3524whether there is an instruction to flash-invalidate the L1 data cache
3525(ori 30,30,0 or mtspr SPRN_TRIG2,rN), whether the L1 data cache is set
3526to a mode where entries can only be used by the thread that created
3527them, whether the bcctr[l] instruction prevents speculation, and
3528whether a speculation barrier instruction (ori 31,31,0) is provided.
3529
3530The behaviour field describes actions that software should take to
3531prevent inadvertent information disclosure, and thus describes which
3532vulnerabilities the hardware is subject to; specifically whether the
3533L1 data cache should be flushed when returning to user mode from the
3534kernel, and whether a speculation barrier should be placed between an
3535array bounds check and the array access.
3536
3537These fields use the same bit definitions as the new
3538H_GET_CPU_CHARACTERISTICS hypercall.
3539
7bf14c28 35404.110 KVM_MEMORY_ENCRYPT_OP
5acc5c06
BS
3541
3542Capability: basic
3543Architectures: x86
3544Type: system
3545Parameters: an opaque platform specific structure (in/out)
3546Returns: 0 on success; -1 on error
3547
3548If the platform supports creating encrypted VMs then this ioctl can be used
3549for issuing platform-specific memory encryption commands to manage those
3550encrypted VMs.
3551
3552Currently, this ioctl is used for issuing Secure Encrypted Virtualization
3553(SEV) commands on AMD Processors. The SEV commands are defined in
21e94aca 3554Documentation/virtual/kvm/amd-memory-encryption.rst.
5acc5c06 3555
7bf14c28 35564.111 KVM_MEMORY_ENCRYPT_REG_REGION
69eaedee
BS
3557
3558Capability: basic
3559Architectures: x86
3560Type: system
3561Parameters: struct kvm_enc_region (in)
3562Returns: 0 on success; -1 on error
3563
3564This ioctl can be used to register a guest memory region which may
3565contain encrypted data (e.g. guest RAM, SMRAM etc).
3566
3567It is used in the SEV-enabled guest. When encryption is enabled, a guest
3568memory region may contain encrypted data. The SEV memory encryption
3569engine uses a tweak such that two identical plaintext pages, each at
3570different locations will have differing ciphertexts. So swapping or
3571moving ciphertext of those pages will not result in plaintext being
3572swapped. So relocating (or migrating) physical backing pages for the SEV
3573guest will require some additional steps.
3574
3575Note: The current SEV key management spec does not provide commands to
3576swap or migrate (move) ciphertext pages. Hence, for now we pin the guest
3577memory region registered with the ioctl.
3578
7bf14c28 35794.112 KVM_MEMORY_ENCRYPT_UNREG_REGION
69eaedee
BS
3580
3581Capability: basic
3582Architectures: x86
3583Type: system
3584Parameters: struct kvm_enc_region (in)
3585Returns: 0 on success; -1 on error
3586
3587This ioctl can be used to unregister the guest memory region registered
3588with KVM_MEMORY_ENCRYPT_REG_REGION ioctl above.
3589
faeb7833
RK
35904.113 KVM_HYPERV_EVENTFD
3591
3592Capability: KVM_CAP_HYPERV_EVENTFD
3593Architectures: x86
3594Type: vm ioctl
3595Parameters: struct kvm_hyperv_eventfd (in)
3596
3597This ioctl (un)registers an eventfd to receive notifications from the guest on
3598the specified Hyper-V connection id through the SIGNAL_EVENT hypercall, without
3599causing a user exit. SIGNAL_EVENT hypercall with non-zero event flag number
3600(bits 24-31) still triggers a KVM_EXIT_HYPERV_HCALL user exit.
3601
3602struct kvm_hyperv_eventfd {
3603 __u32 conn_id;
3604 __s32 fd;
3605 __u32 flags;
3606 __u32 padding[3];
3607};
3608
3609The conn_id field should fit within 24 bits:
3610
3611#define KVM_HYPERV_CONN_ID_MASK 0x00ffffff
3612
3613The acceptable values for the flags field are:
3614
3615#define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0)
3616
3617Returns: 0 on success,
3618 -EINVAL if conn_id or flags is outside the allowed range
3619 -ENOENT on deassign if the conn_id isn't registered
3620 -EEXIST on assign if the conn_id is already registered
3621
8fcc4b59
JM
36224.114 KVM_GET_NESTED_STATE
3623
3624Capability: KVM_CAP_NESTED_STATE
3625Architectures: x86
3626Type: vcpu ioctl
3627Parameters: struct kvm_nested_state (in/out)
3628Returns: 0 on success, -1 on error
3629Errors:
3630 E2BIG: the total state size (including the fixed-size part of struct
3631 kvm_nested_state) exceeds the value of 'size' specified by
3632 the user; the size required will be written into size.
3633
3634struct kvm_nested_state {
3635 __u16 flags;
3636 __u16 format;
3637 __u32 size;
3638 union {
3639 struct kvm_vmx_nested_state vmx;
3640 struct kvm_svm_nested_state svm;
3641 __u8 pad[120];
3642 };
3643 __u8 data[0];
3644};
3645
3646#define KVM_STATE_NESTED_GUEST_MODE 0x00000001
3647#define KVM_STATE_NESTED_RUN_PENDING 0x00000002
3648
3649#define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001
3650#define KVM_STATE_NESTED_SMM_VMXON 0x00000002
3651
3652struct kvm_vmx_nested_state {
3653 __u64 vmxon_pa;
3654 __u64 vmcs_pa;
3655
3656 struct {
3657 __u16 flags;
3658 } smm;
3659};
3660
3661This ioctl copies the vcpu's nested virtualization state from the kernel to
3662userspace.
3663
3664The maximum size of the state, including the fixed-size part of struct
3665kvm_nested_state, can be retrieved by passing KVM_CAP_NESTED_STATE to
3666the KVM_CHECK_EXTENSION ioctl().
3667
36684.115 KVM_SET_NESTED_STATE
3669
3670Capability: KVM_CAP_NESTED_STATE
3671Architectures: x86
3672Type: vcpu ioctl
3673Parameters: struct kvm_nested_state (in)
3674Returns: 0 on success, -1 on error
3675
3676This copies the vcpu's kvm_nested_state struct from userspace to the kernel. For
3677the definition of struct kvm_nested_state, see KVM_GET_NESTED_STATE.
7bf14c28 3678
9c1b96e3 36795. The kvm_run structure
414fa985 3680------------------------
9c1b96e3
AK
3681
3682Application code obtains a pointer to the kvm_run structure by
3683mmap()ing a vcpu fd. From that point, application code can control
3684execution by changing fields in kvm_run prior to calling the KVM_RUN
3685ioctl, and obtain information about the reason KVM_RUN returned by
3686looking up structure members.
3687
3688struct kvm_run {
3689 /* in */
3690 __u8 request_interrupt_window;
3691
3692Request that KVM_RUN return when it becomes possible to inject external
3693interrupts into the guest. Useful in conjunction with KVM_INTERRUPT.
3694
460df4c1
PB
3695 __u8 immediate_exit;
3696
3697This field is polled once when KVM_RUN starts; if non-zero, KVM_RUN
3698exits immediately, returning -EINTR. In the common scenario where a
3699signal is used to "kick" a VCPU out of KVM_RUN, this field can be used
3700to avoid usage of KVM_SET_SIGNAL_MASK, which has worse scalability.
3701Rather than blocking the signal outside KVM_RUN, userspace can set up
3702a signal handler that sets run->immediate_exit to a non-zero value.
3703
3704This field is ignored if KVM_CAP_IMMEDIATE_EXIT is not available.
3705
3706 __u8 padding1[6];
9c1b96e3
AK
3707
3708 /* out */
3709 __u32 exit_reason;
3710
3711When KVM_RUN has returned successfully (return value 0), this informs
3712application code why KVM_RUN has returned. Allowable values for this
3713field are detailed below.
3714
3715 __u8 ready_for_interrupt_injection;
3716
3717If request_interrupt_window has been specified, this field indicates
3718an interrupt can be injected now with KVM_INTERRUPT.
3719
3720 __u8 if_flag;
3721
3722The value of the current interrupt flag. Only valid if in-kernel
3723local APIC is not used.
3724
f077825a
PB
3725 __u16 flags;
3726
3727More architecture-specific flags detailing state of the VCPU that may
3728affect the device's behavior. The only currently defined flag is
3729KVM_RUN_X86_SMM, which is valid on x86 machines and is set if the
3730VCPU is in system management mode.
9c1b96e3
AK
3731
3732 /* in (pre_kvm_run), out (post_kvm_run) */
3733 __u64 cr8;
3734
3735The value of the cr8 register. Only valid if in-kernel local APIC is
3736not used. Both input and output.
3737
3738 __u64 apic_base;
3739
3740The value of the APIC BASE msr. Only valid if in-kernel local
3741APIC is not used. Both input and output.
3742
3743 union {
3744 /* KVM_EXIT_UNKNOWN */
3745 struct {
3746 __u64 hardware_exit_reason;
3747 } hw;
3748
3749If exit_reason is KVM_EXIT_UNKNOWN, the vcpu has exited due to unknown
3750reasons. Further architecture-specific information is available in
3751hardware_exit_reason.
3752
3753 /* KVM_EXIT_FAIL_ENTRY */
3754 struct {
3755 __u64 hardware_entry_failure_reason;
3756 } fail_entry;
3757
3758If exit_reason is KVM_EXIT_FAIL_ENTRY, the vcpu could not be run due
3759to unknown reasons. Further architecture-specific information is
3760available in hardware_entry_failure_reason.
3761
3762 /* KVM_EXIT_EXCEPTION */
3763 struct {
3764 __u32 exception;
3765 __u32 error_code;
3766 } ex;
3767
3768Unused.
3769
3770 /* KVM_EXIT_IO */
3771 struct {
3772#define KVM_EXIT_IO_IN 0
3773#define KVM_EXIT_IO_OUT 1
3774 __u8 direction;
3775 __u8 size; /* bytes */
3776 __u16 port;
3777 __u32 count;
3778 __u64 data_offset; /* relative to kvm_run start */
3779 } io;
3780
2044892d 3781If exit_reason is KVM_EXIT_IO, then the vcpu has
9c1b96e3
AK
3782executed a port I/O instruction which could not be satisfied by kvm.
3783data_offset describes where the data is located (KVM_EXIT_IO_OUT) or
3784where kvm expects application code to place the data for the next
2044892d 3785KVM_RUN invocation (KVM_EXIT_IO_IN). Data format is a packed array.
9c1b96e3 3786
8ab30c15 3787 /* KVM_EXIT_DEBUG */
9c1b96e3
AK
3788 struct {
3789 struct kvm_debug_exit_arch arch;
3790 } debug;
3791
8ab30c15
AB
3792If the exit_reason is KVM_EXIT_DEBUG, then a vcpu is processing a debug event
3793for which architecture specific information is returned.
9c1b96e3
AK
3794
3795 /* KVM_EXIT_MMIO */
3796 struct {
3797 __u64 phys_addr;
3798 __u8 data[8];
3799 __u32 len;
3800 __u8 is_write;
3801 } mmio;
3802
2044892d 3803If exit_reason is KVM_EXIT_MMIO, then the vcpu has
9c1b96e3
AK
3804executed a memory-mapped I/O instruction which could not be satisfied
3805by kvm. The 'data' member contains the written data if 'is_write' is
3806true, and should be filled by application code otherwise.
3807
6acdb160
CD
3808The 'data' member contains, in its first 'len' bytes, the value as it would
3809appear if the VCPU performed a load or store of the appropriate width directly
3810to the byte array.
3811
cc568ead 3812NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_PAPR and
ce91ddc4 3813 KVM_EXIT_EPR the corresponding
ad0a048b
AG
3814operations are complete (and guest state is consistent) only after userspace
3815has re-entered the kernel with KVM_RUN. The kernel side will first finish
67961344
MT
3816incomplete operations and then check for pending signals. Userspace
3817can re-enter the guest with an unmasked signal pending to complete
3818pending operations.
3819
9c1b96e3
AK
3820 /* KVM_EXIT_HYPERCALL */
3821 struct {
3822 __u64 nr;
3823 __u64 args[6];
3824 __u64 ret;
3825 __u32 longmode;
3826 __u32 pad;
3827 } hypercall;
3828
647dc49e
AK
3829Unused. This was once used for 'hypercall to userspace'. To implement
3830such functionality, use KVM_EXIT_IO (x86) or KVM_EXIT_MMIO (all except s390).
3831Note KVM_EXIT_IO is significantly faster than KVM_EXIT_MMIO.
9c1b96e3
AK
3832
3833 /* KVM_EXIT_TPR_ACCESS */
3834 struct {
3835 __u64 rip;
3836 __u32 is_write;
3837 __u32 pad;
3838 } tpr_access;
3839
3840To be documented (KVM_TPR_ACCESS_REPORTING).
3841
3842 /* KVM_EXIT_S390_SIEIC */
3843 struct {
3844 __u8 icptcode;
3845 __u64 mask; /* psw upper half */
3846 __u64 addr; /* psw lower half */
3847 __u16 ipa;
3848 __u32 ipb;
3849 } s390_sieic;
3850
3851s390 specific.
3852
3853 /* KVM_EXIT_S390_RESET */
3854#define KVM_S390_RESET_POR 1
3855#define KVM_S390_RESET_CLEAR 2
3856#define KVM_S390_RESET_SUBSYSTEM 4
3857#define KVM_S390_RESET_CPU_INIT 8
3858#define KVM_S390_RESET_IPL 16
3859 __u64 s390_reset_flags;
3860
3861s390 specific.
3862
e168bf8d
CO
3863 /* KVM_EXIT_S390_UCONTROL */
3864 struct {
3865 __u64 trans_exc_code;
3866 __u32 pgm_code;
3867 } s390_ucontrol;
3868
3869s390 specific. A page fault has occurred for a user controlled virtual
3870machine (KVM_VM_S390_UNCONTROL) on it's host page table that cannot be
3871resolved by the kernel.
3872The program code and the translation exception code that were placed
3873in the cpu's lowcore are presented here as defined by the z Architecture
3874Principles of Operation Book in the Chapter for Dynamic Address Translation
3875(DAT)
3876
9c1b96e3
AK
3877 /* KVM_EXIT_DCR */
3878 struct {
3879 __u32 dcrn;
3880 __u32 data;
3881 __u8 is_write;
3882 } dcr;
3883
ce91ddc4 3884Deprecated - was used for 440 KVM.
9c1b96e3 3885
ad0a048b
AG
3886 /* KVM_EXIT_OSI */
3887 struct {
3888 __u64 gprs[32];
3889 } osi;
3890
3891MOL uses a special hypercall interface it calls 'OSI'. To enable it, we catch
3892hypercalls and exit with this exit struct that contains all the guest gprs.
3893
3894If exit_reason is KVM_EXIT_OSI, then the vcpu has triggered such a hypercall.
3895Userspace can now handle the hypercall and when it's done modify the gprs as
3896necessary. Upon guest entry all guest GPRs will then be replaced by the values
3897in this struct.
3898
de56a948
PM
3899 /* KVM_EXIT_PAPR_HCALL */
3900 struct {
3901 __u64 nr;
3902 __u64 ret;
3903 __u64 args[9];
3904 } papr_hcall;
3905
3906This is used on 64-bit PowerPC when emulating a pSeries partition,
3907e.g. with the 'pseries' machine type in qemu. It occurs when the
3908guest does a hypercall using the 'sc 1' instruction. The 'nr' field
3909contains the hypercall number (from the guest R3), and 'args' contains
3910the arguments (from the guest R4 - R12). Userspace should put the
3911return code in 'ret' and any extra returned values in args[].
3912The possible hypercalls are defined in the Power Architecture Platform
3913Requirements (PAPR) document available from www.power.org (free
3914developer registration required to access it).
3915
fa6b7fe9
CH
3916 /* KVM_EXIT_S390_TSCH */
3917 struct {
3918 __u16 subchannel_id;
3919 __u16 subchannel_nr;
3920 __u32 io_int_parm;
3921 __u32 io_int_word;
3922 __u32 ipb;
3923 __u8 dequeued;
3924 } s390_tsch;
3925
3926s390 specific. This exit occurs when KVM_CAP_S390_CSS_SUPPORT has been enabled
3927and TEST SUBCHANNEL was intercepted. If dequeued is set, a pending I/O
3928interrupt for the target subchannel has been dequeued and subchannel_id,
3929subchannel_nr, io_int_parm and io_int_word contain the parameters for that
3930interrupt. ipb is needed for instruction parameter decoding.
3931
1c810636
AG
3932 /* KVM_EXIT_EPR */
3933 struct {
3934 __u32 epr;
3935 } epr;
3936
3937On FSL BookE PowerPC chips, the interrupt controller has a fast patch
3938interrupt acknowledge path to the core. When the core successfully
3939delivers an interrupt, it automatically populates the EPR register with
3940the interrupt vector number and acknowledges the interrupt inside
3941the interrupt controller.
3942
3943In case the interrupt controller lives in user space, we need to do
3944the interrupt acknowledge cycle through it to fetch the next to be
3945delivered interrupt vector using this exit.
3946
3947It gets triggered whenever both KVM_CAP_PPC_EPR are enabled and an
3948external interrupt has just been delivered into the guest. User space
3949should put the acknowledged interrupt vector into the 'epr' field.
3950
8ad6b634
AP
3951 /* KVM_EXIT_SYSTEM_EVENT */
3952 struct {
3953#define KVM_SYSTEM_EVENT_SHUTDOWN 1
3954#define KVM_SYSTEM_EVENT_RESET 2
2ce79189 3955#define KVM_SYSTEM_EVENT_CRASH 3
8ad6b634
AP
3956 __u32 type;
3957 __u64 flags;
3958 } system_event;
3959
3960If exit_reason is KVM_EXIT_SYSTEM_EVENT then the vcpu has triggered
3961a system-level event using some architecture specific mechanism (hypercall
3962or some special instruction). In case of ARM/ARM64, this is triggered using
3963HVC instruction based PSCI call from the vcpu. The 'type' field describes
3964the system-level event type. The 'flags' field describes architecture
3965specific flags for the system-level event.
3966
cf5d3188
CD
3967Valid values for 'type' are:
3968 KVM_SYSTEM_EVENT_SHUTDOWN -- the guest has requested a shutdown of the
3969 VM. Userspace is not obliged to honour this, and if it does honour
3970 this does not need to destroy the VM synchronously (ie it may call
3971 KVM_RUN again before shutdown finally occurs).
3972 KVM_SYSTEM_EVENT_RESET -- the guest has requested a reset of the VM.
3973 As with SHUTDOWN, userspace can choose to ignore the request, or
3974 to schedule the reset to occur in the future and may call KVM_RUN again.
2ce79189
AS
3975 KVM_SYSTEM_EVENT_CRASH -- the guest crash occurred and the guest
3976 has requested a crash condition maintenance. Userspace can choose
3977 to ignore the request, or to gather VM memory core dump and/or
3978 reset/shutdown of the VM.
cf5d3188 3979
7543a635
SR
3980 /* KVM_EXIT_IOAPIC_EOI */
3981 struct {
3982 __u8 vector;
3983 } eoi;
3984
3985Indicates that the VCPU's in-kernel local APIC received an EOI for a
3986level-triggered IOAPIC interrupt. This exit only triggers when the
3987IOAPIC is implemented in userspace (i.e. KVM_CAP_SPLIT_IRQCHIP is enabled);
3988the userspace IOAPIC should process the EOI and retrigger the interrupt if
3989it is still asserted. Vector is the LAPIC interrupt vector for which the
3990EOI was received.
3991
db397571
AS
3992 struct kvm_hyperv_exit {
3993#define KVM_EXIT_HYPERV_SYNIC 1
83326e43 3994#define KVM_EXIT_HYPERV_HCALL 2
db397571
AS
3995 __u32 type;
3996 union {
3997 struct {
3998 __u32 msr;
3999 __u64 control;
4000 __u64 evt_page;
4001 __u64 msg_page;
4002 } synic;
83326e43
AS
4003 struct {
4004 __u64 input;
4005 __u64 result;
4006 __u64 params[2];
4007 } hcall;
db397571
AS
4008 } u;
4009 };
4010 /* KVM_EXIT_HYPERV */
4011 struct kvm_hyperv_exit hyperv;
4012Indicates that the VCPU exits into userspace to process some tasks
4013related to Hyper-V emulation.
4014Valid values for 'type' are:
4015 KVM_EXIT_HYPERV_SYNIC -- synchronously notify user-space about
4016Hyper-V SynIC state change. Notification is used to remap SynIC
4017event/message pages and to enable/disable SynIC messages/events processing
4018in userspace.
4019
9c1b96e3
AK
4020 /* Fix the size of the union. */
4021 char padding[256];
4022 };
b9e5dc8d
CB
4023
4024 /*
4025 * shared registers between kvm and userspace.
4026 * kvm_valid_regs specifies the register classes set by the host
4027 * kvm_dirty_regs specified the register classes dirtied by userspace
4028 * struct kvm_sync_regs is architecture specific, as well as the
4029 * bits for kvm_valid_regs and kvm_dirty_regs
4030 */
4031 __u64 kvm_valid_regs;
4032 __u64 kvm_dirty_regs;
4033 union {
4034 struct kvm_sync_regs regs;
7b7e3952 4035 char padding[SYNC_REGS_SIZE_BYTES];
b9e5dc8d
CB
4036 } s;
4037
4038If KVM_CAP_SYNC_REGS is defined, these fields allow userspace to access
4039certain guest registers without having to call SET/GET_*REGS. Thus we can
4040avoid some system call overhead if userspace has to handle the exit.
4041Userspace can query the validity of the structure by checking
4042kvm_valid_regs for specific bits. These bits are architecture specific
4043and usually define the validity of a groups of registers. (e.g. one bit
4044 for general purpose registers)
4045
d8482c0d
DH
4046Please note that the kernel is allowed to use the kvm_run structure as the
4047primary storage for certain register types. Therefore, the kernel may use the
4048values in kvm_run even if the corresponding bit in kvm_dirty_regs is not set.
4049
9c1b96e3 4050};
821246a5 4051
414fa985 4052
9c15bb1d 4053
699a0ea0
PM
40546. Capabilities that can be enabled on vCPUs
4055--------------------------------------------
821246a5 4056
0907c855
CH
4057There are certain capabilities that change the behavior of the virtual CPU or
4058the virtual machine when enabled. To enable them, please see section 4.37.
4059Below you can find a list of capabilities and what their effect on the vCPU or
4060the virtual machine is when enabling them.
821246a5
AG
4061
4062The following information is provided along with the description:
4063
4064 Architectures: which instruction set architectures provide this ioctl.
4065 x86 includes both i386 and x86_64.
4066
0907c855
CH
4067 Target: whether this is a per-vcpu or per-vm capability.
4068
821246a5
AG
4069 Parameters: what parameters are accepted by the capability.
4070
4071 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
4072 are not detailed, but errors with specific meanings are.
4073
414fa985 4074
821246a5
AG
40756.1 KVM_CAP_PPC_OSI
4076
4077Architectures: ppc
0907c855 4078Target: vcpu
821246a5
AG
4079Parameters: none
4080Returns: 0 on success; -1 on error
4081
4082This capability enables interception of OSI hypercalls that otherwise would
4083be treated as normal system calls to be injected into the guest. OSI hypercalls
4084were invented by Mac-on-Linux to have a standardized communication mechanism
4085between the guest and the host.
4086
4087When this capability is enabled, KVM_EXIT_OSI can occur.
4088
414fa985 4089
821246a5
AG
40906.2 KVM_CAP_PPC_PAPR
4091
4092Architectures: ppc
0907c855 4093Target: vcpu
821246a5
AG
4094Parameters: none
4095Returns: 0 on success; -1 on error
4096
4097This capability enables interception of PAPR hypercalls. PAPR hypercalls are
4098done using the hypercall instruction "sc 1".
4099
4100It also sets the guest privilege level to "supervisor" mode. Usually the guest
4101runs in "hypervisor" privilege mode with a few missing features.
4102
4103In addition to the above, it changes the semantics of SDR1. In this mode, the
4104HTAB address part of SDR1 contains an HVA instead of a GPA, as PAPR keeps the
4105HTAB invisible to the guest.
4106
4107When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur.
dc83b8bc 4108
414fa985 4109
dc83b8bc
SW
41106.3 KVM_CAP_SW_TLB
4111
4112Architectures: ppc
0907c855 4113Target: vcpu
dc83b8bc
SW
4114Parameters: args[0] is the address of a struct kvm_config_tlb
4115Returns: 0 on success; -1 on error
4116
4117struct kvm_config_tlb {
4118 __u64 params;
4119 __u64 array;
4120 __u32 mmu_type;
4121 __u32 array_len;
4122};
4123
4124Configures the virtual CPU's TLB array, establishing a shared memory area
4125between userspace and KVM. The "params" and "array" fields are userspace
4126addresses of mmu-type-specific data structures. The "array_len" field is an
4127safety mechanism, and should be set to the size in bytes of the memory that
4128userspace has reserved for the array. It must be at least the size dictated
4129by "mmu_type" and "params".
4130
4131While KVM_RUN is active, the shared region is under control of KVM. Its
4132contents are undefined, and any modification by userspace results in
4133boundedly undefined behavior.
4134
4135On return from KVM_RUN, the shared region will reflect the current state of
4136the guest's TLB. If userspace makes any changes, it must call KVM_DIRTY_TLB
4137to tell KVM which entries have been changed, prior to calling KVM_RUN again
4138on this vcpu.
4139
4140For mmu types KVM_MMU_FSL_BOOKE_NOHV and KVM_MMU_FSL_BOOKE_HV:
4141 - The "params" field is of type "struct kvm_book3e_206_tlb_params".
4142 - The "array" field points to an array of type "struct
4143 kvm_book3e_206_tlb_entry".
4144 - The array consists of all entries in the first TLB, followed by all
4145 entries in the second TLB.
4146 - Within a TLB, entries are ordered first by increasing set number. Within a
4147 set, entries are ordered by way (increasing ESEL).
4148 - The hash for determining set number in TLB0 is: (MAS2 >> 12) & (num_sets - 1)
4149 where "num_sets" is the tlb_sizes[] value divided by the tlb_ways[] value.
4150 - The tsize field of mas1 shall be set to 4K on TLB0, even though the
4151 hardware ignores this value for TLB0.
fa6b7fe9
CH
4152
41536.4 KVM_CAP_S390_CSS_SUPPORT
4154
4155Architectures: s390
0907c855 4156Target: vcpu
fa6b7fe9
CH
4157Parameters: none
4158Returns: 0 on success; -1 on error
4159
4160This capability enables support for handling of channel I/O instructions.
4161
4162TEST PENDING INTERRUPTION and the interrupt portion of TEST SUBCHANNEL are
4163handled in-kernel, while the other I/O instructions are passed to userspace.
4164
4165When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST
4166SUBCHANNEL intercepts.
1c810636 4167
0907c855
CH
4168Note that even though this capability is enabled per-vcpu, the complete
4169virtual machine is affected.
4170
1c810636
AG
41716.5 KVM_CAP_PPC_EPR
4172
4173Architectures: ppc
0907c855 4174Target: vcpu
1c810636
AG
4175Parameters: args[0] defines whether the proxy facility is active
4176Returns: 0 on success; -1 on error
4177
4178This capability enables or disables the delivery of interrupts through the
4179external proxy facility.
4180
4181When enabled (args[0] != 0), every time the guest gets an external interrupt
4182delivered, it automatically exits into user space with a KVM_EXIT_EPR exit
4183to receive the topmost interrupt vector.
4184
4185When disabled (args[0] == 0), behavior is as if this facility is unsupported.
4186
4187When this capability is enabled, KVM_EXIT_EPR can occur.
eb1e4f43
SW
4188
41896.6 KVM_CAP_IRQ_MPIC
4190
4191Architectures: ppc
4192Parameters: args[0] is the MPIC device fd
4193 args[1] is the MPIC CPU number for this vcpu
4194
4195This capability connects the vcpu to an in-kernel MPIC device.
5975a2e0
PM
4196
41976.7 KVM_CAP_IRQ_XICS
4198
4199Architectures: ppc
0907c855 4200Target: vcpu
5975a2e0
PM
4201Parameters: args[0] is the XICS device fd
4202 args[1] is the XICS CPU number (server ID) for this vcpu
4203
4204This capability connects the vcpu to an in-kernel XICS device.
8a366a4b
CH
4205
42066.8 KVM_CAP_S390_IRQCHIP
4207
4208Architectures: s390
4209Target: vm
4210Parameters: none
4211
4212This capability enables the in-kernel irqchip for s390. Please refer to
4213"4.24 KVM_CREATE_IRQCHIP" for details.
699a0ea0 4214
5fafd874
JH
42156.9 KVM_CAP_MIPS_FPU
4216
4217Architectures: mips
4218Target: vcpu
4219Parameters: args[0] is reserved for future use (should be 0).
4220
4221This capability allows the use of the host Floating Point Unit by the guest. It
4222allows the Config1.FP bit to be set to enable the FPU in the guest. Once this is
4223done the KVM_REG_MIPS_FPR_* and KVM_REG_MIPS_FCR_* registers can be accessed
4224(depending on the current guest FPU register mode), and the Status.FR,
4225Config5.FRE bits are accessible via the KVM API and also from the guest,
4226depending on them being supported by the FPU.
4227
d952bd07
JH
42286.10 KVM_CAP_MIPS_MSA
4229
4230Architectures: mips
4231Target: vcpu
4232Parameters: args[0] is reserved for future use (should be 0).
4233
4234This capability allows the use of the MIPS SIMD Architecture (MSA) by the guest.
4235It allows the Config3.MSAP bit to be set to enable the use of MSA by the guest.
4236Once this is done the KVM_REG_MIPS_VEC_* and KVM_REG_MIPS_MSA_* registers can be
4237accessed, and the Config5.MSAEn bit is accessible via the KVM API and also from
4238the guest.
4239
01643c51
KH
42406.74 KVM_CAP_SYNC_REGS
4241Architectures: s390, x86
4242Target: s390: always enabled, x86: vcpu
4243Parameters: none
4244Returns: x86: KVM_CHECK_EXTENSION returns a bit-array indicating which register
4245sets are supported (bitfields defined in arch/x86/include/uapi/asm/kvm.h).
4246
4247As described above in the kvm_sync_regs struct info in section 5 (kvm_run):
4248KVM_CAP_SYNC_REGS "allow[s] userspace to access certain guest registers
4249without having to call SET/GET_*REGS". This reduces overhead by eliminating
4250repeated ioctl calls for setting and/or getting register values. This is
4251particularly important when userspace is making synchronous guest state
4252modifications, e.g. when emulating and/or intercepting instructions in
4253userspace.
4254
4255For s390 specifics, please refer to the source code.
4256
4257For x86:
4258- the register sets to be copied out to kvm_run are selectable
4259 by userspace (rather that all sets being copied out for every exit).
4260- vcpu_events are available in addition to regs and sregs.
4261
4262For x86, the 'kvm_valid_regs' field of struct kvm_run is overloaded to
4263function as an input bit-array field set by userspace to indicate the
4264specific register sets to be copied out on the next exit.
4265
4266To indicate when userspace has modified values that should be copied into
4267the vCPU, the all architecture bitarray field, 'kvm_dirty_regs' must be set.
4268This is done using the same bitflags as for the 'kvm_valid_regs' field.
4269If the dirty bit is not set, then the register set values will not be copied
4270into the vCPU even if they've been modified.
4271
4272Unused bitfields in the bitarrays must be set to zero.
4273
4274struct kvm_sync_regs {
4275 struct kvm_regs regs;
4276 struct kvm_sregs sregs;
4277 struct kvm_vcpu_events events;
4278};
4279
699a0ea0
PM
42807. Capabilities that can be enabled on VMs
4281------------------------------------------
4282
4283There are certain capabilities that change the behavior of the virtual
4284machine when enabled. To enable them, please see section 4.37. Below
4285you can find a list of capabilities and what their effect on the VM
4286is when enabling them.
4287
4288The following information is provided along with the description:
4289
4290 Architectures: which instruction set architectures provide this ioctl.
4291 x86 includes both i386 and x86_64.
4292
4293 Parameters: what parameters are accepted by the capability.
4294
4295 Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
4296 are not detailed, but errors with specific meanings are.
4297
4298
42997.1 KVM_CAP_PPC_ENABLE_HCALL
4300
4301Architectures: ppc
4302Parameters: args[0] is the sPAPR hcall number
4303 args[1] is 0 to disable, 1 to enable in-kernel handling
4304
4305This capability controls whether individual sPAPR hypercalls (hcalls)
4306get handled by the kernel or not. Enabling or disabling in-kernel
4307handling of an hcall is effective across the VM. On creation, an
4308initial set of hcalls are enabled for in-kernel handling, which
4309consists of those hcalls for which in-kernel handlers were implemented
4310before this capability was implemented. If disabled, the kernel will
4311not to attempt to handle the hcall, but will always exit to userspace
4312to handle it. Note that it may not make sense to enable some and
4313disable others of a group of related hcalls, but KVM does not prevent
4314userspace from doing that.
ae2113a4
PM
4315
4316If the hcall number specified is not one that has an in-kernel
4317implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL
4318error.
2444b352
DH
4319
43207.2 KVM_CAP_S390_USER_SIGP
4321
4322Architectures: s390
4323Parameters: none
4324
4325This capability controls which SIGP orders will be handled completely in user
4326space. With this capability enabled, all fast orders will be handled completely
4327in the kernel:
4328- SENSE
4329- SENSE RUNNING
4330- EXTERNAL CALL
4331- EMERGENCY SIGNAL
4332- CONDITIONAL EMERGENCY SIGNAL
4333
4334All other orders will be handled completely in user space.
4335
4336Only privileged operation exceptions will be checked for in the kernel (or even
4337in the hardware prior to interception). If this capability is not enabled, the
4338old way of handling SIGP orders is used (partially in kernel and user space).
68c55750
EF
4339
43407.3 KVM_CAP_S390_VECTOR_REGISTERS
4341
4342Architectures: s390
4343Parameters: none
4344Returns: 0 on success, negative value on error
4345
4346Allows use of the vector registers introduced with z13 processor, and
4347provides for the synchronization between host and user space. Will
4348return -EINVAL if the machine does not support vectors.
e44fc8c9
ET
4349
43507.4 KVM_CAP_S390_USER_STSI
4351
4352Architectures: s390
4353Parameters: none
4354
4355This capability allows post-handlers for the STSI instruction. After
4356initial handling in the kernel, KVM exits to user space with
4357KVM_EXIT_S390_STSI to allow user space to insert further data.
4358
4359Before exiting to userspace, kvm handlers should fill in s390_stsi field of
4360vcpu->run:
4361struct {
4362 __u64 addr;
4363 __u8 ar;
4364 __u8 reserved;
4365 __u8 fc;
4366 __u8 sel1;
4367 __u16 sel2;
4368} s390_stsi;
4369
4370@addr - guest address of STSI SYSIB
4371@fc - function code
4372@sel1 - selector 1
4373@sel2 - selector 2
4374@ar - access register number
4375
4376KVM handlers should exit to userspace with rc = -EREMOTE.
e928e9cb 4377
49df6397
SR
43787.5 KVM_CAP_SPLIT_IRQCHIP
4379
4380Architectures: x86
b053b2ae 4381Parameters: args[0] - number of routes reserved for userspace IOAPICs
49df6397
SR
4382Returns: 0 on success, -1 on error
4383
4384Create a local apic for each processor in the kernel. This can be used
4385instead of KVM_CREATE_IRQCHIP if the userspace VMM wishes to emulate the
4386IOAPIC and PIC (and also the PIT, even though this has to be enabled
4387separately).
4388
b053b2ae
SR
4389This capability also enables in kernel routing of interrupt requests;
4390when KVM_CAP_SPLIT_IRQCHIP only routes of KVM_IRQ_ROUTING_MSI type are
4391used in the IRQ routing table. The first args[0] MSI routes are reserved
4392for the IOAPIC pins. Whenever the LAPIC receives an EOI for these routes,
4393a KVM_EXIT_IOAPIC_EOI vmexit will be reported to userspace.
49df6397
SR
4394
4395Fails if VCPU has already been created, or if the irqchip is already in the
4396kernel (i.e. KVM_CREATE_IRQCHIP has already been called).
4397
051c87f7
DH
43987.6 KVM_CAP_S390_RI
4399
4400Architectures: s390
4401Parameters: none
4402
4403Allows use of runtime-instrumentation introduced with zEC12 processor.
4404Will return -EINVAL if the machine does not support runtime-instrumentation.
4405Will return -EBUSY if a VCPU has already been created.
e928e9cb 4406
37131313
RK
44077.7 KVM_CAP_X2APIC_API
4408
4409Architectures: x86
4410Parameters: args[0] - features that should be enabled
4411Returns: 0 on success, -EINVAL when args[0] contains invalid features
4412
4413Valid feature flags in args[0] are
4414
4415#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
c519265f 4416#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1)
37131313
RK
4417
4418Enabling KVM_X2APIC_API_USE_32BIT_IDS changes the behavior of
4419KVM_SET_GSI_ROUTING, KVM_SIGNAL_MSI, KVM_SET_LAPIC, and KVM_GET_LAPIC,
4420allowing the use of 32-bit APIC IDs. See KVM_CAP_X2APIC_API in their
4421respective sections.
4422
c519265f
RK
4423KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK must be enabled for x2APIC to work
4424in logical mode or with more than 255 VCPUs. Otherwise, KVM treats 0xff
4425as a broadcast even in x2APIC mode in order to support physical x2APIC
4426without interrupt remapping. This is undesirable in logical mode,
4427where 0xff represents CPUs 0-7 in cluster 0.
37131313 4428
6502a34c
DH
44297.8 KVM_CAP_S390_USER_INSTR0
4430
4431Architectures: s390
4432Parameters: none
4433
4434With this capability enabled, all illegal instructions 0x0000 (2 bytes) will
4435be intercepted and forwarded to user space. User space can use this
4436mechanism e.g. to realize 2-byte software breakpoints. The kernel will
4437not inject an operating exception for these instructions, user space has
4438to take care of that.
4439
4440This capability can be enabled dynamically even if VCPUs were already
4441created and are running.
37131313 4442
4e0b1ab7
FZ
44437.9 KVM_CAP_S390_GS
4444
4445Architectures: s390
4446Parameters: none
4447Returns: 0 on success; -EINVAL if the machine does not support
4448 guarded storage; -EBUSY if a VCPU has already been created.
4449
4450Allows use of guarded storage for the KVM guest.
4451
47a4693e
YMZ
44527.10 KVM_CAP_S390_AIS
4453
4454Architectures: s390
4455Parameters: none
4456
4457Allow use of adapter-interruption suppression.
4458Returns: 0 on success; -EBUSY if a VCPU has already been created.
4459
3c313524
PM
44607.11 KVM_CAP_PPC_SMT
4461
4462Architectures: ppc
4463Parameters: vsmt_mode, flags
4464
4465Enabling this capability on a VM provides userspace with a way to set
4466the desired virtual SMT mode (i.e. the number of virtual CPUs per
4467virtual core). The virtual SMT mode, vsmt_mode, must be a power of 2
4468between 1 and 8. On POWER8, vsmt_mode must also be no greater than
4469the number of threads per subcore for the host. Currently flags must
4470be 0. A successful call to enable this capability will result in
4471vsmt_mode being returned when the KVM_CAP_PPC_SMT capability is
4472subsequently queried for the VM. This capability is only supported by
4473HV KVM, and can only be set before any VCPUs have been created.
2ed4f9dd
PM
4474The KVM_CAP_PPC_SMT_POSSIBLE capability indicates which virtual SMT
4475modes are available.
3c313524 4476
134764ed
AP
44777.12 KVM_CAP_PPC_FWNMI
4478
4479Architectures: ppc
4480Parameters: none
4481
4482With this capability a machine check exception in the guest address
4483space will cause KVM to exit the guest with NMI exit reason. This
4484enables QEMU to build error log and branch to guest kernel registered
4485machine check handling routine. Without this capability KVM will
4486branch to guests' 0x200 interrupt vector.
4487
4d5422ce
WL
44887.13 KVM_CAP_X86_DISABLE_EXITS
4489
4490Architectures: x86
4491Parameters: args[0] defines which exits are disabled
4492Returns: 0 on success, -EINVAL when args[0] contains invalid exits
4493
4494Valid bits in args[0] are
4495
4496#define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
caa057a2 4497#define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
4d5422ce
WL
4498
4499Enabling this capability on a VM provides userspace with a way to no
4500longer intercept some instructions for improved latency in some
4501workloads, and is suggested when vCPUs are associated to dedicated
4502physical CPUs. More bits can be added in the future; userspace can
4503just pass the KVM_CHECK_EXTENSION result to KVM_ENABLE_CAP to disable
4504all such vmexits.
4505
caa057a2 4506Do not enable KVM_FEATURE_PV_UNHALT if you disable HLT exits.
4d5422ce 4507
a4499382
JF
45087.14 KVM_CAP_S390_HPAGE_1M
4509
4510Architectures: s390
4511Parameters: none
4512Returns: 0 on success, -EINVAL if hpage module parameter was not set
4513 or cmma is enabled
4514
4515With this capability the KVM support for memory backing with 1m pages
4516through hugetlbfs can be enabled for a VM. After the capability is
4517enabled, cmma can't be enabled anymore and pfmfi and the storage key
4518interpretation are disabled. If cmma has already been enabled or the
4519hpage module parameter is not set to 1, -EINVAL is returned.
4520
4521While it is generally possible to create a huge page backed VM without
4522this capability, the VM will not be able to run.
4523
e928e9cb
ME
45248. Other capabilities.
4525----------------------
4526
4527This section lists capabilities that give information about other
4528features of the KVM implementation.
4529
45308.1 KVM_CAP_PPC_HWRNG
4531
4532Architectures: ppc
4533
4534This capability, if KVM_CHECK_EXTENSION indicates that it is
4535available, means that that the kernel has an implementation of the
4536H_RANDOM hypercall backed by a hardware random-number generator.
4537If present, the kernel H_RANDOM handler can be enabled for guest use
4538with the KVM_CAP_PPC_ENABLE_HCALL capability.
5c919412
AS
4539
45408.2 KVM_CAP_HYPERV_SYNIC
4541
4542Architectures: x86
4543This capability, if KVM_CHECK_EXTENSION indicates that it is
4544available, means that that the kernel has an implementation of the
4545Hyper-V Synthetic interrupt controller(SynIC). Hyper-V SynIC is
4546used to support Windows Hyper-V based guest paravirt drivers(VMBus).
4547
4548In order to use SynIC, it has to be activated by setting this
4549capability via KVM_ENABLE_CAP ioctl on the vcpu fd. Note that this
4550will disable the use of APIC hardware virtualization even if supported
4551by the CPU, as it's incompatible with SynIC auto-EOI behavior.
c9270132
PM
4552
45538.3 KVM_CAP_PPC_RADIX_MMU
4554
4555Architectures: ppc
4556
4557This capability, if KVM_CHECK_EXTENSION indicates that it is
4558available, means that that the kernel can support guests using the
4559radix MMU defined in Power ISA V3.00 (as implemented in the POWER9
4560processor).
4561
45628.4 KVM_CAP_PPC_HASH_MMU_V3
4563
4564Architectures: ppc
4565
4566This capability, if KVM_CHECK_EXTENSION indicates that it is
4567available, means that that the kernel can support guests using the
4568hashed page table MMU defined in Power ISA V3.00 (as implemented in
4569the POWER9 processor), including in-memory segment tables.
a8a3c426
JH
4570
45718.5 KVM_CAP_MIPS_VZ
4572
4573Architectures: mips
4574
4575This capability, if KVM_CHECK_EXTENSION on the main kvm handle indicates that
4576it is available, means that full hardware assisted virtualization capabilities
4577of the hardware are available for use through KVM. An appropriate
4578KVM_VM_MIPS_* type must be passed to KVM_CREATE_VM to create a VM which
4579utilises it.
4580
4581If KVM_CHECK_EXTENSION on a kvm VM handle indicates that this capability is
4582available, it means that the VM is using full hardware assisted virtualization
4583capabilities of the hardware. This is useful to check after creating a VM with
4584KVM_VM_MIPS_DEFAULT.
4585
4586The value returned by KVM_CHECK_EXTENSION should be compared against known
4587values (see below). All other values are reserved. This is to allow for the
4588possibility of other hardware assisted virtualization implementations which
4589may be incompatible with the MIPS VZ ASE.
4590
4591 0: The trap & emulate implementation is in use to run guest code in user
4592 mode. Guest virtual memory segments are rearranged to fit the guest in the
4593 user mode address space.
4594
4595 1: The MIPS VZ ASE is in use, providing full hardware assisted
4596 virtualization, including standard guest virtual memory segments.
4597
45988.6 KVM_CAP_MIPS_TE
4599
4600Architectures: mips
4601
4602This capability, if KVM_CHECK_EXTENSION on the main kvm handle indicates that
4603it is available, means that the trap & emulate implementation is available to
4604run guest code in user mode, even if KVM_CAP_MIPS_VZ indicates that hardware
4605assisted virtualisation is also available. KVM_VM_MIPS_TE (0) must be passed
4606to KVM_CREATE_VM to create a VM which utilises it.
4607
4608If KVM_CHECK_EXTENSION on a kvm VM handle indicates that this capability is
4609available, it means that the VM is using trap & emulate.
578fd61d
JH
4610
46118.7 KVM_CAP_MIPS_64BIT
4612
4613Architectures: mips
4614
4615This capability indicates the supported architecture type of the guest, i.e. the
4616supported register and address width.
4617
4618The values returned when this capability is checked by KVM_CHECK_EXTENSION on a
4619kvm VM handle correspond roughly to the CP0_Config.AT register field, and should
4620be checked specifically against known values (see below). All other values are
4621reserved.
4622
4623 0: MIPS32 or microMIPS32.
4624 Both registers and addresses are 32-bits wide.
4625 It will only be possible to run 32-bit guest code.
4626
4627 1: MIPS64 or microMIPS64 with access only to 32-bit compatibility segments.
4628 Registers are 64-bits wide, but addresses are 32-bits wide.
4629 64-bit guest code may run but cannot access MIPS64 memory segments.
4630 It will also be possible to run 32-bit guest code.
4631
4632 2: MIPS64 or microMIPS64 with access to all address segments.
4633 Both registers and addresses are 64-bits wide.
4634 It will be possible to run 64-bit or 32-bit guest code.
668fffa3 4635
c24a7be2 46368.9 KVM_CAP_ARM_USER_IRQ
3fe17e68
AG
4637
4638Architectures: arm, arm64
4639This capability, if KVM_CHECK_EXTENSION indicates that it is available, means
4640that if userspace creates a VM without an in-kernel interrupt controller, it
4641will be notified of changes to the output level of in-kernel emulated devices,
4642which can generate virtual interrupts, presented to the VM.
4643For such VMs, on every return to userspace, the kernel
4644updates the vcpu's run->s.regs.device_irq_level field to represent the actual
4645output level of the device.
4646
4647Whenever kvm detects a change in the device output level, kvm guarantees at
4648least one return to userspace before running the VM. This exit could either
4649be a KVM_EXIT_INTR or any other exit event, like KVM_EXIT_MMIO. This way,
4650userspace can always sample the device output level and re-compute the state of
4651the userspace interrupt controller. Userspace should always check the state
4652of run->s.regs.device_irq_level on every kvm exit.
4653The value in run->s.regs.device_irq_level can represent both level and edge
4654triggered interrupt signals, depending on the device. Edge triggered interrupt
4655signals will exit to userspace with the bit in run->s.regs.device_irq_level
4656set exactly once per edge signal.
4657
4658The field run->s.regs.device_irq_level is available independent of
4659run->kvm_valid_regs or run->kvm_dirty_regs bits.
4660
4661If KVM_CAP_ARM_USER_IRQ is supported, the KVM_CHECK_EXTENSION ioctl returns a
4662number larger than 0 indicating the version of this capability is implemented
4663and thereby which bits in in run->s.regs.device_irq_level can signal values.
4664
4665Currently the following bits are defined for the device_irq_level bitmap:
4666
4667 KVM_CAP_ARM_USER_IRQ >= 1:
4668
4669 KVM_ARM_DEV_EL1_VTIMER - EL1 virtual timer
4670 KVM_ARM_DEV_EL1_PTIMER - EL1 physical timer
4671 KVM_ARM_DEV_PMU - ARM PMU overflow interrupt signal
4672
4673Future versions of kvm may implement additional events. These will get
4674indicated by returning a higher number from KVM_CHECK_EXTENSION and will be
4675listed above.
2ed4f9dd
PM
4676
46778.10 KVM_CAP_PPC_SMT_POSSIBLE
4678
4679Architectures: ppc
4680
4681Querying this capability returns a bitmap indicating the possible
4682virtual SMT modes that can be set using KVM_CAP_PPC_SMT. If bit N
4683(counting from the right) is set, then a virtual SMT mode of 2^N is
4684available.
efc479e6
RK
4685
46868.11 KVM_CAP_HYPERV_SYNIC2
4687
4688Architectures: x86
4689
4690This capability enables a newer version of Hyper-V Synthetic interrupt
4691controller (SynIC). The only difference with KVM_CAP_HYPERV_SYNIC is that KVM
4692doesn't clear SynIC message and event flags pages when they are enabled by
4693writing to the respective MSRs.
d3457c87
RK
4694
46958.12 KVM_CAP_HYPERV_VP_INDEX
4696
4697Architectures: x86
4698
4699This capability indicates that userspace can load HV_X64_MSR_VP_INDEX msr. Its
4700value is used to denote the target vcpu for a SynIC interrupt. For
4701compatibilty, KVM initializes this msr to KVM's internal vcpu index. When this
4702capability is absent, userspace can still query this msr's value.
da9a1446
CB
4703
47048.13 KVM_CAP_S390_AIS_MIGRATION
4705
4706Architectures: s390
4707Parameters: none
4708
4709This capability indicates if the flic device will be able to get/set the
4710AIS states for migration via the KVM_DEV_FLIC_AISM_ALL attribute and allows
4711to discover this without having to create a flic device.
5c2b4d5b
CB
4712
47138.14 KVM_CAP_S390_PSW
4714
4715Architectures: s390
4716
4717This capability indicates that the PSW is exposed via the kvm_run structure.
4718
47198.15 KVM_CAP_S390_GMAP
4720
4721Architectures: s390
4722
4723This capability indicates that the user space memory used as guest mapping can
4724be anywhere in the user memory address space, as long as the memory slots are
4725aligned and sized to a segment (1MB) boundary.
4726
47278.16 KVM_CAP_S390_COW
4728
4729Architectures: s390
4730
4731This capability indicates that the user space memory used as guest mapping can
4732use copy-on-write semantics as well as dirty pages tracking via read-only page
4733tables.
4734
47358.17 KVM_CAP_S390_BPB
4736
4737Architectures: s390
4738
4739This capability indicates that kvm will implement the interfaces to handle
4740reset, migration and nested KVM for branch prediction blocking. The stfle
4741facility 82 should not be provided to the guest without this capability.
c1aea919 4742
2ddc6498 47438.18 KVM_CAP_HYPERV_TLBFLUSH
c1aea919
VK
4744
4745Architectures: x86
4746
4747This capability indicates that KVM supports paravirtualized Hyper-V TLB Flush
4748hypercalls:
4749HvFlushVirtualAddressSpace, HvFlushVirtualAddressSpaceEx,
4750HvFlushVirtualAddressList, HvFlushVirtualAddressListEx.
be26b3a7 4751
688e0581 47528.19 KVM_CAP_ARM_INJECT_SERROR_ESR
be26b3a7
DG
4753
4754Architectures: arm, arm64
4755
4756This capability indicates that userspace can specify (via the
4757KVM_SET_VCPU_EVENTS ioctl) the syndrome value reported to the guest when it
4758takes a virtual SError interrupt exception.
4759If KVM advertises this capability, userspace can only specify the ISS field for
4760the ESR syndrome. Other parts of the ESR, such as the EC are generated by the
4761CPU when the exception is taken. If this virtual SError is taken to EL1 using
4762AArch64, this value will be reported in the ISS field of ESR_ELx.
4763
4764See KVM_CAP_VCPU_EVENTS for more details.