Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
uapi
linux
kvm.h
Go to the documentation of this file.
1
#ifndef __LINUX_KVM_H
2
#define __LINUX_KVM_H
3
4
/*
5
* Userspace interface for /dev/kvm - kernel based virtual machine
6
*
7
* Note: you must update KVM_API_VERSION if you change this interface.
8
*/
9
10
#include <linux/types.h>
11
#include <linux/compiler.h>
12
#include <
linux/ioctl.h
>
13
#include <asm/kvm.h>
14
15
#define KVM_API_VERSION 12
16
17
/* *** Deprecated interfaces *** */
18
19
#define KVM_TRC_SHIFT 16
20
21
#define KVM_TRC_ENTRYEXIT (1 << KVM_TRC_SHIFT)
22
#define KVM_TRC_HANDLER (1 << (KVM_TRC_SHIFT + 1))
23
24
#define KVM_TRC_VMENTRY (KVM_TRC_ENTRYEXIT + 0x01)
25
#define KVM_TRC_VMEXIT (KVM_TRC_ENTRYEXIT + 0x02)
26
#define KVM_TRC_PAGE_FAULT (KVM_TRC_HANDLER + 0x01)
27
28
#define KVM_TRC_HEAD_SIZE 12
29
#define KVM_TRC_CYCLE_SIZE 8
30
#define KVM_TRC_EXTRA_MAX 7
31
32
#define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02)
33
#define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03)
34
#define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04)
35
#define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05)
36
#define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06)
37
#define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07)
38
#define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08)
39
#define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09)
40
#define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A)
41
#define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B)
42
#define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C)
43
#define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D)
44
#define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E)
45
#define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F)
46
#define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10)
47
#define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11)
48
#define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12)
49
#define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13)
50
#define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14)
51
#define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15)
52
#define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16)
53
#define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17)
54
#define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18)
55
#define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19)
56
57
struct
kvm_user_trace_setup
{
58
__u32
buf_size
;
59
__u32
buf_nr
;
60
};
61
62
#define __KVM_DEPRECATED_MAIN_W_0x06 \
63
_IOW(KVMIO, 0x06, struct kvm_user_trace_setup)
64
#define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07)
65
#define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08)
66
67
#define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq)
68
69
struct
kvm_breakpoint
{
70
__u32
enabled
;
71
__u32
padding
;
72
__u64
address
;
73
};
74
75
struct
kvm_debug_guest
{
76
__u32
enabled
;
77
__u32
pad
;
78
struct
kvm_breakpoint
breakpoints
[4];
79
__u32
singlestep
;
80
};
81
82
#define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest)
83
84
/* *** End of deprecated interfaces *** */
85
86
87
/* for KVM_CREATE_MEMORY_REGION */
88
struct
kvm_memory_region
{
89
__u32
slot
;
90
__u32
flags
;
91
__u64
guest_phys_addr
;
92
__u64
memory_size
;
/* bytes */
93
};
94
95
/* for KVM_SET_USER_MEMORY_REGION */
96
struct
kvm_userspace_memory_region
{
97
__u32
slot
;
98
__u32
flags
;
99
__u64
guest_phys_addr
;
100
__u64
memory_size
;
/* bytes */
101
__u64
userspace_addr
;
/* start of the userspace allocated memory */
102
};
103
104
/*
105
* The bit 0 ~ bit 15 of kvm_memory_region::flags are visible for userspace,
106
* other bits are reserved for kvm internal use which are defined in
107
* include/linux/kvm_host.h.
108
*/
109
#define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0)
110
#define KVM_MEM_READONLY (1UL << 1)
111
112
/* for KVM_IRQ_LINE */
113
struct
kvm_irq_level
{
114
/*
115
* ACPI gsi notion of irq.
116
* For IA-64 (APIC model) IOAPIC0: irq 0-23; IOAPIC1: irq 24-47..
117
* For X86 (standard AT mode) PIC0/1: irq 0-15. IOAPIC0: 0-23..
118
*/
119
union
{
120
__u32
irq
;
121
__s32
status
;
122
};
123
__u32
level
;
124
};
125
126
127
struct
kvm_irqchip
{
128
__u32
chip_id
;
129
__u32
pad
;
130
union
{
131
char
dummy
[512];
/* reserving space */
132
#ifdef __KVM_HAVE_PIT
133
struct
kvm_pic_state
pic
;
134
#endif
135
#ifdef __KVM_HAVE_IOAPIC
136
struct
kvm_ioapic_state
ioapic;
137
#endif
138
}
chip
;
139
};
140
141
/* for KVM_CREATE_PIT2 */
142
struct
kvm_pit_config
{
143
__u32
flags
;
144
__u32
pad
[15];
145
};
146
147
#define KVM_PIT_SPEAKER_DUMMY 1
148
149
#define KVM_EXIT_UNKNOWN 0
150
#define KVM_EXIT_EXCEPTION 1
151
#define KVM_EXIT_IO 2
152
#define KVM_EXIT_HYPERCALL 3
153
#define KVM_EXIT_DEBUG 4
154
#define KVM_EXIT_HLT 5
155
#define KVM_EXIT_MMIO 6
156
#define KVM_EXIT_IRQ_WINDOW_OPEN 7
157
#define KVM_EXIT_SHUTDOWN 8
158
#define KVM_EXIT_FAIL_ENTRY 9
159
#define KVM_EXIT_INTR 10
160
#define KVM_EXIT_SET_TPR 11
161
#define KVM_EXIT_TPR_ACCESS 12
162
#define KVM_EXIT_S390_SIEIC 13
163
#define KVM_EXIT_S390_RESET 14
164
#define KVM_EXIT_DCR 15
165
#define KVM_EXIT_NMI 16
166
#define KVM_EXIT_INTERNAL_ERROR 17
167
#define KVM_EXIT_OSI 18
168
#define KVM_EXIT_PAPR_HCALL 19
169
#define KVM_EXIT_S390_UCONTROL 20
170
171
/* For KVM_EXIT_INTERNAL_ERROR */
172
#define KVM_INTERNAL_ERROR_EMULATION 1
173
#define KVM_INTERNAL_ERROR_SIMUL_EX 2
174
175
/* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */
176
struct
kvm_run
{
177
/* in */
178
__u8
request_interrupt_window
;
179
__u8
padding1
[7];
180
181
/* out */
182
__u32
exit_reason
;
183
__u8
ready_for_interrupt_injection
;
184
__u8
if_flag
;
185
__u8
padding2
[2];
186
187
/* in (pre_kvm_run), out (post_kvm_run) */
188
__u64
cr8
;
189
__u64
apic_base
;
190
191
#ifdef __KVM_S390
192
/* the processor status word for s390 */
193
__u64
psw_mask;
/* psw upper half */
194
__u64
psw_addr;
/* psw lower half */
195
#endif
196
union
{
197
/* KVM_EXIT_UNKNOWN */
198
struct
{
199
__u64
hardware_exit_reason
;
200
}
hw
;
201
/* KVM_EXIT_FAIL_ENTRY */
202
struct
{
203
__u64
hardware_entry_failure_reason
;
204
}
fail_entry
;
205
/* KVM_EXIT_EXCEPTION */
206
struct
{
207
__u32
exception
;
208
__u32
error_code
;
209
}
ex
;
210
/* KVM_EXIT_IO */
211
struct
{
212
#define KVM_EXIT_IO_IN 0
213
#define KVM_EXIT_IO_OUT 1
214
__u8
direction
;
215
__u8
size
;
/* bytes */
216
__u16
port
;
217
__u32
count
;
218
__u64
data_offset
;
/* relative to kvm_run start */
219
}
io
;
220
struct
{
221
struct
kvm_debug_exit_arch
arch
;
222
}
debug
;
223
/* KVM_EXIT_MMIO */
224
struct
{
225
__u64
phys_addr
;
226
__u8
data
[8];
227
__u32
len
;
228
__u8
is_write
;
229
}
mmio
;
230
/* KVM_EXIT_HYPERCALL */
231
struct
{
232
__u64
nr
;
233
__u64
args
[6];
234
__u64
ret
;
235
__u32
longmode
;
236
__u32
pad
;
237
}
hypercall
;
238
/* KVM_EXIT_TPR_ACCESS */
239
struct
{
240
__u64
rip
;
241
__u32
is_write
;
242
__u32
pad
;
243
}
tpr_access
;
244
/* KVM_EXIT_S390_SIEIC */
245
struct
{
246
__u8
icptcode
;
247
__u16
ipa
;
248
__u32
ipb
;
249
}
s390_sieic
;
250
/* KVM_EXIT_S390_RESET */
251
#define KVM_S390_RESET_POR 1
252
#define KVM_S390_RESET_CLEAR 2
253
#define KVM_S390_RESET_SUBSYSTEM 4
254
#define KVM_S390_RESET_CPU_INIT 8
255
#define KVM_S390_RESET_IPL 16
256
__u64
s390_reset_flags
;
257
/* KVM_EXIT_S390_UCONTROL */
258
struct
{
259
__u64
trans_exc_code
;
260
__u32
pgm_code
;
261
}
s390_ucontrol
;
262
/* KVM_EXIT_DCR */
263
struct
{
264
__u32
dcrn
;
265
__u32
data
;
266
__u8
is_write
;
267
}
dcr
;
268
struct
{
269
__u32
suberror
;
270
/* Available with KVM_CAP_INTERNAL_ERROR_DATA: */
271
__u32
ndata
;
272
__u64
data
[16];
273
}
internal
;
274
/* KVM_EXIT_OSI */
275
struct
{
276
__u64
gprs
[32];
277
}
osi
;
278
struct
{
279
__u64
nr
;
280
__u64
ret
;
281
__u64
args
[9];
282
}
papr_hcall
;
283
/* Fix the size of the union. */
284
char
padding
[256];
285
};
286
287
/*
288
* shared registers between kvm and userspace.
289
* kvm_valid_regs specifies the register classes set by the host
290
* kvm_dirty_regs specified the register classes dirtied by userspace
291
* struct kvm_sync_regs is architecture specific, as well as the
292
* bits for kvm_valid_regs and kvm_dirty_regs
293
*/
294
__u64
kvm_valid_regs
;
295
__u64
kvm_dirty_regs
;
296
union
{
297
struct
kvm_sync_regs
regs
;
298
char
padding
[1024];
299
}
s
;
300
};
301
302
/* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */
303
304
struct
kvm_coalesced_mmio_zone
{
305
__u64
addr
;
306
__u32
size
;
307
__u32
pad
;
308
};
309
310
struct
kvm_coalesced_mmio
{
311
__u64
phys_addr
;
312
__u32
len
;
313
__u32
pad
;
314
__u8
data
[8];
315
};
316
317
struct
kvm_coalesced_mmio_ring
{
318
__u32
first
,
last
;
319
struct
kvm_coalesced_mmio
coalesced_mmio
[0];
320
};
321
322
#define KVM_COALESCED_MMIO_MAX \
323
((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / \
324
sizeof(struct kvm_coalesced_mmio))
325
326
/* for KVM_TRANSLATE */
327
struct
kvm_translation
{
328
/* in */
329
__u64
linear_address
;
330
331
/* out */
332
__u64
physical_address
;
333
__u8
valid
;
334
__u8
writeable
;
335
__u8
usermode
;
336
__u8
pad
[5];
337
};
338
339
/* for KVM_INTERRUPT */
340
struct
kvm_interrupt
{
341
/* in */
342
__u32
irq
;
343
};
344
345
/* for KVM_GET_DIRTY_LOG */
346
struct
kvm_dirty_log
{
347
__u32
slot
;
348
__u32
padding1
;
349
union
{
350
void
__user
*
dirty_bitmap
;
/* one bit per page */
351
__u64
padding2
;
352
};
353
};
354
355
/* for KVM_SET_SIGNAL_MASK */
356
struct
kvm_signal_mask
{
357
__u32
len
;
358
__u8
sigset
[0];
359
};
360
361
/* for KVM_TPR_ACCESS_REPORTING */
362
struct
kvm_tpr_access_ctl
{
363
__u32
enabled
;
364
__u32
flags
;
365
__u32
reserved
[8];
366
};
367
368
/* for KVM_SET_VAPIC_ADDR */
369
struct
kvm_vapic_addr
{
370
__u64
vapic_addr
;
371
};
372
373
/* for KVM_SET_MPSTATE */
374
375
#define KVM_MP_STATE_RUNNABLE 0
376
#define KVM_MP_STATE_UNINITIALIZED 1
377
#define KVM_MP_STATE_INIT_RECEIVED 2
378
#define KVM_MP_STATE_HALTED 3
379
#define KVM_MP_STATE_SIPI_RECEIVED 4
380
381
struct
kvm_mp_state
{
382
__u32
mp_state
;
383
};
384
385
struct
kvm_s390_psw
{
386
__u64
mask
;
387
__u64
addr
;
388
};
389
390
/* valid values for type in kvm_s390_interrupt */
391
#define KVM_S390_SIGP_STOP 0xfffe0000u
392
#define KVM_S390_PROGRAM_INT 0xfffe0001u
393
#define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u
394
#define KVM_S390_RESTART 0xfffe0003u
395
#define KVM_S390_INT_VIRTIO 0xffff2603u
396
#define KVM_S390_INT_SERVICE 0xffff2401u
397
#define KVM_S390_INT_EMERGENCY 0xffff1201u
398
#define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u
399
400
struct
kvm_s390_interrupt
{
401
__u32
type
;
402
__u32
parm
;
403
__u64
parm64
;
404
};
405
406
/* for KVM_SET_GUEST_DEBUG */
407
408
#define KVM_GUESTDBG_ENABLE 0x00000001
409
#define KVM_GUESTDBG_SINGLESTEP 0x00000002
410
411
struct
kvm_guest_debug
{
412
__u32
control
;
413
__u32
pad
;
414
struct
kvm_guest_debug_arch
arch
;
415
};
416
417
enum
{
418
kvm_ioeventfd_flag_nr_datamatch
,
419
kvm_ioeventfd_flag_nr_pio
,
420
kvm_ioeventfd_flag_nr_deassign
,
421
kvm_ioeventfd_flag_nr_max
,
422
};
423
424
#define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
425
#define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
426
#define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign)
427
428
#define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1)
429
430
struct
kvm_ioeventfd
{
431
__u64
datamatch
;
432
__u64
addr
;
/* legal pio/mmio address */
433
__u32
len
;
/* 1, 2, 4, or 8 bytes */
434
__s32
fd
;
435
__u32
flags
;
436
__u8
pad
[36];
437
};
438
439
/* for KVM_ENABLE_CAP */
440
struct
kvm_enable_cap
{
441
/* in */
442
__u32
cap
;
443
__u32
flags
;
444
__u64
args
[4];
445
__u8
pad
[64];
446
};
447
448
/* for KVM_PPC_GET_PVINFO */
449
struct
kvm_ppc_pvinfo
{
450
/* out */
451
__u32
flags
;
452
__u32
hcall
[4];
453
__u8
pad
[108];
454
};
455
456
/* for KVM_PPC_GET_SMMU_INFO */
457
#define KVM_PPC_PAGE_SIZES_MAX_SZ 8
458
459
struct
kvm_ppc_one_page_size
{
460
__u32
page_shift
;
/* Page shift (or 0) */
461
__u32
pte_enc
;
/* Encoding in the HPTE (>>12) */
462
};
463
464
struct
kvm_ppc_one_seg_page_size
{
465
__u32
page_shift
;
/* Base page shift of segment (or 0) */
466
__u32
slb_enc
;
/* SLB encoding for BookS */
467
struct
kvm_ppc_one_page_size
enc
[
KVM_PPC_PAGE_SIZES_MAX_SZ
];
468
};
469
470
#define KVM_PPC_PAGE_SIZES_REAL 0x00000001
471
#define KVM_PPC_1T_SEGMENTS 0x00000002
472
473
struct
kvm_ppc_smmu_info
{
474
__u64
flags
;
475
__u32
slb_size
;
476
__u32
pad
;
477
struct
kvm_ppc_one_seg_page_size
sps
[
KVM_PPC_PAGE_SIZES_MAX_SZ
];
478
};
479
480
#define KVMIO 0xAE
481
482
/* machine type bits, to be used as argument to KVM_CREATE_VM */
483
#define KVM_VM_S390_UCONTROL 1
484
485
#define KVM_S390_SIE_PAGE_OFFSET 1
486
487
/*
488
* ioctls for /dev/kvm fds:
489
*/
490
#define KVM_GET_API_VERSION _IO(KVMIO, 0x00)
491
#define KVM_CREATE_VM _IO(KVMIO, 0x01)
/* returns a VM fd */
492
#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list)
493
494
#define KVM_S390_ENABLE_SIE _IO(KVMIO, 0x06)
495
/*
496
* Check if a kvm extension is available. Argument is extension number,
497
* return is 1 (yes) or 0 (no, sorry).
498
*/
499
#define KVM_CHECK_EXTENSION _IO(KVMIO, 0x03)
500
/*
501
* Get size for mmap(vcpu_fd)
502
*/
503
#define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04)
/* in bytes */
504
#define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2)
505
#define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06
506
#define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07
507
#define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08
508
509
/*
510
* Extension capability list.
511
*/
512
#define KVM_CAP_IRQCHIP 0
513
#define KVM_CAP_HLT 1
514
#define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2
515
#define KVM_CAP_USER_MEMORY 3
516
#define KVM_CAP_SET_TSS_ADDR 4
517
#define KVM_CAP_VAPIC 6
518
#define KVM_CAP_EXT_CPUID 7
519
#define KVM_CAP_CLOCKSOURCE 8
520
#define KVM_CAP_NR_VCPUS 9
/* returns recommended max vcpus per vm */
521
#define KVM_CAP_NR_MEMSLOTS 10
/* returns max memory slots per vm */
522
#define KVM_CAP_PIT 11
523
#define KVM_CAP_NOP_IO_DELAY 12
524
#define KVM_CAP_PV_MMU 13
525
#define KVM_CAP_MP_STATE 14
526
#define KVM_CAP_COALESCED_MMIO 15
527
#define KVM_CAP_SYNC_MMU 16
/* Changes to host mmap are reflected in guest */
528
#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
529
#define KVM_CAP_DEVICE_ASSIGNMENT 17
530
#endif
531
#define KVM_CAP_IOMMU 18
532
#ifdef __KVM_HAVE_MSI
533
#define KVM_CAP_DEVICE_MSI 20
534
#endif
535
/* Bug in KVM_SET_USER_MEMORY_REGION fixed: */
536
#define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
537
#ifdef __KVM_HAVE_USER_NMI
538
#define KVM_CAP_USER_NMI 22
539
#endif
540
#ifdef __KVM_HAVE_GUEST_DEBUG
541
#define KVM_CAP_SET_GUEST_DEBUG 23
542
#endif
543
#ifdef __KVM_HAVE_PIT
544
#define KVM_CAP_REINJECT_CONTROL 24
545
#endif
546
#ifdef __KVM_HAVE_IOAPIC
547
#define KVM_CAP_IRQ_ROUTING 25
548
#endif
549
#define KVM_CAP_IRQ_INJECT_STATUS 26
550
#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
551
#define KVM_CAP_DEVICE_DEASSIGNMENT 27
552
#endif
553
#ifdef __KVM_HAVE_MSIX
554
#define KVM_CAP_DEVICE_MSIX 28
555
#endif
556
#define KVM_CAP_ASSIGN_DEV_IRQ 29
557
/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */
558
#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
559
#ifdef __KVM_HAVE_MCE
560
#define KVM_CAP_MCE 31
561
#endif
562
#define KVM_CAP_IRQFD 32
563
#ifdef __KVM_HAVE_PIT
564
#define KVM_CAP_PIT2 33
565
#endif
566
#define KVM_CAP_SET_BOOT_CPU_ID 34
567
#ifdef __KVM_HAVE_PIT_STATE2
568
#define KVM_CAP_PIT_STATE2 35
569
#endif
570
#define KVM_CAP_IOEVENTFD 36
571
#define KVM_CAP_SET_IDENTITY_MAP_ADDR 37
572
#ifdef __KVM_HAVE_XEN_HVM
573
#define KVM_CAP_XEN_HVM 38
574
#endif
575
#define KVM_CAP_ADJUST_CLOCK 39
576
#define KVM_CAP_INTERNAL_ERROR_DATA 40
577
#ifdef __KVM_HAVE_VCPU_EVENTS
578
#define KVM_CAP_VCPU_EVENTS 41
579
#endif
580
#define KVM_CAP_S390_PSW 42
581
#define KVM_CAP_PPC_SEGSTATE 43
582
#define KVM_CAP_HYPERV 44
583
#define KVM_CAP_HYPERV_VAPIC 45
584
#define KVM_CAP_HYPERV_SPIN 46
585
#define KVM_CAP_PCI_SEGMENT 47
586
#define KVM_CAP_PPC_PAIRED_SINGLES 48
587
#define KVM_CAP_INTR_SHADOW 49
588
#ifdef __KVM_HAVE_DEBUGREGS
589
#define KVM_CAP_DEBUGREGS 50
590
#endif
591
#define KVM_CAP_X86_ROBUST_SINGLESTEP 51
592
#define KVM_CAP_PPC_OSI 52
593
#define KVM_CAP_PPC_UNSET_IRQ 53
594
#define KVM_CAP_ENABLE_CAP 54
595
#ifdef __KVM_HAVE_XSAVE
596
#define KVM_CAP_XSAVE 55
597
#endif
598
#ifdef __KVM_HAVE_XCRS
599
#define KVM_CAP_XCRS 56
600
#endif
601
#define KVM_CAP_PPC_GET_PVINFO 57
602
#define KVM_CAP_PPC_IRQ_LEVEL 58
603
#define KVM_CAP_ASYNC_PF 59
604
#define KVM_CAP_TSC_CONTROL 60
605
#define KVM_CAP_GET_TSC_KHZ 61
606
#define KVM_CAP_PPC_BOOKE_SREGS 62
607
#define KVM_CAP_SPAPR_TCE 63
608
#define KVM_CAP_PPC_SMT 64
609
#define KVM_CAP_PPC_RMA 65
610
#define KVM_CAP_MAX_VCPUS 66
/* returns max vcpus per vm */
611
#define KVM_CAP_PPC_HIOR 67
612
#define KVM_CAP_PPC_PAPR 68
613
#define KVM_CAP_SW_TLB 69
614
#define KVM_CAP_ONE_REG 70
615
#define KVM_CAP_S390_GMAP 71
616
#define KVM_CAP_TSC_DEADLINE_TIMER 72
617
#define KVM_CAP_S390_UCONTROL 73
618
#define KVM_CAP_SYNC_REGS 74
619
#define KVM_CAP_PCI_2_3 75
620
#define KVM_CAP_KVMCLOCK_CTRL 76
621
#define KVM_CAP_SIGNAL_MSI 77
622
#define KVM_CAP_PPC_GET_SMMU_INFO 78
623
#define KVM_CAP_S390_COW 79
624
#define KVM_CAP_PPC_ALLOC_HTAB 80
625
#ifdef __KVM_HAVE_READONLY_MEM
626
#define KVM_CAP_READONLY_MEM 81
627
#endif
628
#define KVM_CAP_IRQFD_RESAMPLE 82
629
630
#ifdef KVM_CAP_IRQ_ROUTING
631
632
struct
kvm_irq_routing_irqchip {
633
__u32
irqchip;
634
__u32
pin
;
635
};
636
637
struct
kvm_irq_routing_msi {
638
__u32
address_lo;
639
__u32
address_hi;
640
__u32
data
;
641
__u32
pad
;
642
};
643
644
/* gsi routing entry types */
645
#define KVM_IRQ_ROUTING_IRQCHIP 1
646
#define KVM_IRQ_ROUTING_MSI 2
647
648
struct
kvm_irq_routing_entry {
649
__u32
gsi
;
650
__u32
type
;
651
__u32
flags
;
652
__u32
pad
;
653
union
{
654
struct
kvm_irq_routing_irqchip irqchip;
655
struct
kvm_irq_routing_msi msi;
656
__u32
pad
[8];
657
}
u
;
658
};
659
660
struct
kvm_irq_routing {
661
__u32
nr
;
662
__u32
flags
;
663
struct
kvm_irq_routing_entry
entries
[0];
664
};
665
666
#endif
667
668
#ifdef KVM_CAP_MCE
669
/* x86 MCE */
670
struct
kvm_x86_mce {
671
__u64
status
;
672
__u64
addr
;
673
__u64
misc
;
674
__u64
mcg_status;
675
__u8
bank;
676
__u8
pad1
[7];
677
__u64
pad2
[3];
678
};
679
#endif
680
681
#ifdef KVM_CAP_XEN_HVM
682
struct
kvm_xen_hvm_config {
683
__u32
flags
;
684
__u32
msr;
685
__u64
blob_addr_32;
686
__u64
blob_addr_64;
687
__u8
blob_size_32;
688
__u8
blob_size_64;
689
__u8
pad2
[30];
690
};
691
#endif
692
693
#define KVM_IRQFD_FLAG_DEASSIGN (1 << 0)
694
/*
695
* Available with KVM_CAP_IRQFD_RESAMPLE
696
*
697
* KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies
698
* the irqfd to operate in resampling mode for level triggered interrupt
699
* emlation. See Documentation/virtual/kvm/api.txt.
700
*/
701
#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
702
703
struct
kvm_irqfd
{
704
__u32
fd
;
705
__u32
gsi
;
706
__u32
flags
;
707
__u32
resamplefd
;
708
__u8
pad
[16];
709
};
710
711
struct
kvm_clock_data
{
712
__u64
clock
;
713
__u32
flags
;
714
__u32
pad
[9];
715
};
716
717
#define KVM_MMU_FSL_BOOKE_NOHV 0
718
#define KVM_MMU_FSL_BOOKE_HV 1
719
720
struct
kvm_config_tlb
{
721
__u64
params
;
722
__u64
array
;
723
__u32
mmu_type
;
724
__u32
array_len
;
725
};
726
727
struct
kvm_dirty_tlb
{
728
__u64
bitmap
;
729
__u32
num_dirty
;
730
};
731
732
/* Available with KVM_CAP_ONE_REG */
733
734
#define KVM_REG_ARCH_MASK 0xff00000000000000ULL
735
#define KVM_REG_GENERIC 0x0000000000000000ULL
736
737
/*
738
* Architecture specific registers are to be defined in arch headers and
739
* ORed with the arch identifier.
740
*/
741
#define KVM_REG_PPC 0x1000000000000000ULL
742
#define KVM_REG_X86 0x2000000000000000ULL
743
#define KVM_REG_IA64 0x3000000000000000ULL
744
#define KVM_REG_ARM 0x4000000000000000ULL
745
#define KVM_REG_S390 0x5000000000000000ULL
746
747
#define KVM_REG_SIZE_SHIFT 52
748
#define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
749
#define KVM_REG_SIZE_U8 0x0000000000000000ULL
750
#define KVM_REG_SIZE_U16 0x0010000000000000ULL
751
#define KVM_REG_SIZE_U32 0x0020000000000000ULL
752
#define KVM_REG_SIZE_U64 0x0030000000000000ULL
753
#define KVM_REG_SIZE_U128 0x0040000000000000ULL
754
#define KVM_REG_SIZE_U256 0x0050000000000000ULL
755
#define KVM_REG_SIZE_U512 0x0060000000000000ULL
756
#define KVM_REG_SIZE_U1024 0x0070000000000000ULL
757
758
struct
kvm_one_reg
{
759
__u64
id
;
760
__u64
addr
;
761
};
762
763
struct
kvm_msi
{
764
__u32
address_lo
;
765
__u32
address_hi
;
766
__u32
data
;
767
__u32
flags
;
768
__u8
pad
[16];
769
};
770
771
/*
772
* ioctls for VM fds
773
*/
774
#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region)
775
/*
776
* KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns
777
* a vcpu fd.
778
*/
779
#define KVM_CREATE_VCPU _IO(KVMIO, 0x41)
780
#define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log)
781
/* KVM_SET_MEMORY_ALIAS is obsolete: */
782
#define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias)
783
#define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44)
784
#define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45)
785
#define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, \
786
struct kvm_userspace_memory_region)
787
#define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47)
788
#define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64)
789
790
/* enable ucontrol for s390 */
791
struct
kvm_s390_ucas_mapping
{
792
__u64
user_addr
;
793
__u64
vcpu_addr
;
794
__u64
length
;
795
};
796
#define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)
797
#define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)
798
#define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)
799
800
/* Device model IOC */
801
#define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)
802
#define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level)
803
#define KVM_GET_IRQCHIP _IOWR(KVMIO, 0x62, struct kvm_irqchip)
804
#define KVM_SET_IRQCHIP _IOR(KVMIO, 0x63, struct kvm_irqchip)
805
#define KVM_CREATE_PIT _IO(KVMIO, 0x64)
806
#define KVM_GET_PIT _IOWR(KVMIO, 0x65, struct kvm_pit_state)
807
#define KVM_SET_PIT _IOR(KVMIO, 0x66, struct kvm_pit_state)
808
#define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level)
809
#define KVM_REGISTER_COALESCED_MMIO \
810
_IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone)
811
#define KVM_UNREGISTER_COALESCED_MMIO \
812
_IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone)
813
#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \
814
struct kvm_assigned_pci_dev)
815
#define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
816
/* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */
817
#define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70
818
#define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
819
#define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71)
820
#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \
821
struct kvm_assigned_pci_dev)
822
#define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, \
823
struct kvm_assigned_msix_nr)
824
#define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, \
825
struct kvm_assigned_msix_entry)
826
#define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
827
#define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd)
828
#define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config)
829
#define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78)
830
#define KVM_IOEVENTFD _IOW(KVMIO, 0x79, struct kvm_ioeventfd)
831
#define KVM_XEN_HVM_CONFIG _IOW(KVMIO, 0x7a, struct kvm_xen_hvm_config)
832
#define KVM_SET_CLOCK _IOW(KVMIO, 0x7b, struct kvm_clock_data)
833
#define KVM_GET_CLOCK _IOR(KVMIO, 0x7c, struct kvm_clock_data)
834
/* Available with KVM_CAP_PIT_STATE2 */
835
#define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2)
836
#define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2)
837
/* Available with KVM_CAP_PPC_GET_PVINFO */
838
#define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo)
839
/* Available with KVM_CAP_TSC_CONTROL */
840
#define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2)
841
#define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3)
842
/* Available with KVM_CAP_PCI_2_3 */
843
#define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, \
844
struct kvm_assigned_pci_dev)
845
/* Available with KVM_CAP_SIGNAL_MSI */
846
#define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi)
847
/* Available with KVM_CAP_PPC_GET_SMMU_INFO */
848
#define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info)
849
/* Available with KVM_CAP_PPC_ALLOC_HTAB */
850
#define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32)
851
852
/*
853
* ioctls for vcpu fds
854
*/
855
#define KVM_RUN _IO(KVMIO, 0x80)
856
#define KVM_GET_REGS _IOR(KVMIO, 0x81, struct kvm_regs)
857
#define KVM_SET_REGS _IOW(KVMIO, 0x82, struct kvm_regs)
858
#define KVM_GET_SREGS _IOR(KVMIO, 0x83, struct kvm_sregs)
859
#define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs)
860
#define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation)
861
#define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt)
862
/* KVM_DEBUG_GUEST is no longer supported, use KVM_SET_GUEST_DEBUG instead */
863
#define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87
864
#define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs)
865
#define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs)
866
#define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid)
867
#define KVM_SET_SIGNAL_MASK _IOW(KVMIO, 0x8b, struct kvm_signal_mask)
868
#define KVM_GET_FPU _IOR(KVMIO, 0x8c, struct kvm_fpu)
869
#define KVM_SET_FPU _IOW(KVMIO, 0x8d, struct kvm_fpu)
870
#define KVM_GET_LAPIC _IOR(KVMIO, 0x8e, struct kvm_lapic_state)
871
#define KVM_SET_LAPIC _IOW(KVMIO, 0x8f, struct kvm_lapic_state)
872
#define KVM_SET_CPUID2 _IOW(KVMIO, 0x90, struct kvm_cpuid2)
873
#define KVM_GET_CPUID2 _IOWR(KVMIO, 0x91, struct kvm_cpuid2)
874
/* Available with KVM_CAP_VAPIC */
875
#define KVM_TPR_ACCESS_REPORTING _IOWR(KVMIO, 0x92, struct kvm_tpr_access_ctl)
876
/* Available with KVM_CAP_VAPIC */
877
#define KVM_SET_VAPIC_ADDR _IOW(KVMIO, 0x93, struct kvm_vapic_addr)
878
/* valid for virtual machine (for floating interrupt)_and_ vcpu */
879
#define KVM_S390_INTERRUPT _IOW(KVMIO, 0x94, struct kvm_s390_interrupt)
880
/* store status for s390 */
881
#define KVM_S390_STORE_STATUS_NOADDR (-1ul)
882
#define KVM_S390_STORE_STATUS_PREFIXED (-2ul)
883
#define KVM_S390_STORE_STATUS _IOW(KVMIO, 0x95, unsigned long)
884
/* initial ipl psw for s390 */
885
#define KVM_S390_SET_INITIAL_PSW _IOW(KVMIO, 0x96, struct kvm_s390_psw)
886
/* initial reset for s390 */
887
#define KVM_S390_INITIAL_RESET _IO(KVMIO, 0x97)
888
#define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state)
889
#define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state)
890
/* Available with KVM_CAP_NMI */
891
#define KVM_NMI _IO(KVMIO, 0x9a)
892
/* Available with KVM_CAP_SET_GUEST_DEBUG */
893
#define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug)
894
/* MCE for x86 */
895
#define KVM_X86_SETUP_MCE _IOW(KVMIO, 0x9c, __u64)
896
#define KVM_X86_GET_MCE_CAP_SUPPORTED _IOR(KVMIO, 0x9d, __u64)
897
#define KVM_X86_SET_MCE _IOW(KVMIO, 0x9e, struct kvm_x86_mce)
898
/* IA64 stack access */
899
#define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *)
900
#define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *)
901
/* Available with KVM_CAP_VCPU_EVENTS */
902
#define KVM_GET_VCPU_EVENTS _IOR(KVMIO, 0x9f, struct kvm_vcpu_events)
903
#define KVM_SET_VCPU_EVENTS _IOW(KVMIO, 0xa0, struct kvm_vcpu_events)
904
/* Available with KVM_CAP_DEBUGREGS */
905
#define KVM_GET_DEBUGREGS _IOR(KVMIO, 0xa1, struct kvm_debugregs)
906
#define KVM_SET_DEBUGREGS _IOW(KVMIO, 0xa2, struct kvm_debugregs)
907
#define KVM_ENABLE_CAP _IOW(KVMIO, 0xa3, struct kvm_enable_cap)
908
/* Available with KVM_CAP_XSAVE */
909
#define KVM_GET_XSAVE _IOR(KVMIO, 0xa4, struct kvm_xsave)
910
#define KVM_SET_XSAVE _IOW(KVMIO, 0xa5, struct kvm_xsave)
911
/* Available with KVM_CAP_XCRS */
912
#define KVM_GET_XCRS _IOR(KVMIO, 0xa6, struct kvm_xcrs)
913
#define KVM_SET_XCRS _IOW(KVMIO, 0xa7, struct kvm_xcrs)
914
#define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce)
915
/* Available with KVM_CAP_RMA */
916
#define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma)
917
/* Available with KVM_CAP_SW_TLB */
918
#define KVM_DIRTY_TLB _IOW(KVMIO, 0xaa, struct kvm_dirty_tlb)
919
/* Available with KVM_CAP_ONE_REG */
920
#define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg)
921
#define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg)
922
/* VM is being stopped by host */
923
#define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
924
925
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
926
#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
927
#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
928
929
struct
kvm_assigned_pci_dev
{
930
__u32
assigned_dev_id
;
931
__u32
busnr
;
932
__u32
devfn
;
933
__u32
flags
;
934
__u32
segnr
;
935
union
{
936
__u32
reserved
[11];
937
};
938
};
939
940
#define KVM_DEV_IRQ_HOST_INTX (1 << 0)
941
#define KVM_DEV_IRQ_HOST_MSI (1 << 1)
942
#define KVM_DEV_IRQ_HOST_MSIX (1 << 2)
943
944
#define KVM_DEV_IRQ_GUEST_INTX (1 << 8)
945
#define KVM_DEV_IRQ_GUEST_MSI (1 << 9)
946
#define KVM_DEV_IRQ_GUEST_MSIX (1 << 10)
947
948
#define KVM_DEV_IRQ_HOST_MASK 0x00ff
949
#define KVM_DEV_IRQ_GUEST_MASK 0xff00
950
951
struct
kvm_assigned_irq
{
952
__u32
assigned_dev_id
;
953
__u32
host_irq
;
/* ignored (legacy field) */
954
__u32
guest_irq
;
955
__u32
flags
;
956
union
{
957
__u32
reserved
[12];
958
};
959
};
960
961
struct
kvm_assigned_msix_nr
{
962
__u32
assigned_dev_id
;
963
__u16
entry_nr
;
964
__u16
padding
;
965
};
966
967
#define KVM_MAX_MSIX_PER_DEV 256
968
struct
kvm_assigned_msix_entry
{
969
__u32
assigned_dev_id
;
970
__u32
gsi
;
971
__u16
entry
;
/* The index of entry in the MSI-X table */
972
__u16
padding
[3];
973
};
974
975
#endif
/* __LINUX_KVM_H */
Generated on Thu Jan 10 2013 13:06:25 for Linux Kernel by
1.8.2