Blame view
include/linux/kvm.h
22.4 KB
6aa8b732c [PATCH] kvm: user... |
1 2 3 4 5 6 |
#ifndef __LINUX_KVM_H #define __LINUX_KVM_H /* * Userspace interface for /dev/kvm - kernel based virtual machine * |
dea8caee7 KVM: Trivial: /de... |
7 |
* Note: you must update KVM_API_VERSION if you change this interface. |
6aa8b732c [PATCH] kvm: user... |
8 |
*/ |
00bfddaf7 include of <linux... |
9 |
#include <linux/types.h> |
97646202b KVM: kvm.h: __use... |
10 |
#include <linux/compiler.h> |
6aa8b732c [PATCH] kvm: user... |
11 |
#include <linux/ioctl.h> |
f6a40e3bd KVM: Portability:... |
12 |
#include <asm/kvm.h> |
6aa8b732c [PATCH] kvm: user... |
13 |
|
2ff81f70b KVM: Remove unuse... |
14 |
#define KVM_API_VERSION 12 |
0b76e20b2 [PATCH] KVM: API ... |
15 |
|
c54d2aba2 KVM: Reorder IOCT... |
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* *** Deprecated interfaces *** */ #define KVM_TRC_SHIFT 16 #define KVM_TRC_ENTRYEXIT (1 << KVM_TRC_SHIFT) #define KVM_TRC_HANDLER (1 << (KVM_TRC_SHIFT + 1)) #define KVM_TRC_VMENTRY (KVM_TRC_ENTRYEXIT + 0x01) #define KVM_TRC_VMEXIT (KVM_TRC_ENTRYEXIT + 0x02) #define KVM_TRC_PAGE_FAULT (KVM_TRC_HANDLER + 0x01) #define KVM_TRC_HEAD_SIZE 12 #define KVM_TRC_CYCLE_SIZE 8 #define KVM_TRC_EXTRA_MAX 7 #define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) #define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) #define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) #define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05) #define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06) #define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07) #define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08) #define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09) #define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A) #define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B) #define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C) #define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D) #define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E) #define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F) #define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10) #define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11) #define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12) #define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13) #define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14) #define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15) #define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16) #define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17) #define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18) #define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19) |
2714d1d3d KVM: Add trace ma... |
55 |
struct kvm_user_trace_setup { |
c54d2aba2 KVM: Reorder IOCT... |
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
__u32 buf_size; __u32 buf_nr; }; #define __KVM_DEPRECATED_MAIN_W_0x06 \ _IOW(KVMIO, 0x06, struct kvm_user_trace_setup) #define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07) #define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08) #define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq) struct kvm_breakpoint { __u32 enabled; __u32 padding; __u64 address; }; struct kvm_debug_guest { __u32 enabled; __u32 pad; struct kvm_breakpoint breakpoints[4]; __u32 singlestep; |
2714d1d3d KVM: Add trace ma... |
78 |
}; |
c54d2aba2 KVM: Reorder IOCT... |
79 80 81 |
#define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest) /* *** End of deprecated interfaces *** */ |
6aa8b732c [PATCH] kvm: user... |
82 83 84 85 86 87 88 |
/* for KVM_CREATE_MEMORY_REGION */ struct kvm_memory_region { __u32 slot; __u32 flags; __u64 guest_phys_addr; __u64 memory_size; /* bytes */ }; |
6fc138d22 KVM: Support assi... |
89 90 91 92 93 94 95 96 |
/* for KVM_SET_USER_MEMORY_REGION */ struct kvm_userspace_memory_region { __u32 slot; __u32 flags; __u64 guest_phys_addr; __u64 memory_size; /* bytes */ __u64 userspace_addr; /* start of the userspace allocated memory */ }; |
6aa8b732c [PATCH] kvm: user... |
97 98 |
/* for kvm_memory_region::flags */ #define KVM_MEM_LOG_DIRTY_PAGES 1UL |
bc6678a33 KVM: introduce kv... |
99 |
#define KVM_MEMSLOT_INVALID (1UL << 1) |
6aa8b732c [PATCH] kvm: user... |
100 |
|
97222cc83 KVM: Emulate loca... |
101 |
/* for KVM_IRQ_LINE */ |
85f455f7d KVM: Add support ... |
102 103 104 105 106 107 |
struct kvm_irq_level { /* * ACPI gsi notion of irq. * For IA-64 (APIC model) IOAPIC0: irq 0-23; IOAPIC1: irq 24-47.. * For X86 (standard AT mode) PIC0/1: irq 0-15. IOAPIC0: 0-23.. */ |
4925663a0 KVM: Report IRQ i... |
108 109 110 111 |
union { __u32 irq; __s32 status; }; |
85f455f7d KVM: Add support ... |
112 113 |
__u32 level; }; |
6ceb9d791 KVM: Add get/set ... |
114 115 116 117 118 119 |
struct kvm_irqchip { __u32 chip_id; __u32 pad; union { char dummy[512]; /* reserving space */ |
7a0eb1960 KVM: Avoid using ... |
120 |
#ifdef __KVM_HAVE_PIT |
6ceb9d791 KVM: Add get/set ... |
121 |
struct kvm_pic_state pic; |
ec10f4750 KVM: Expose ioapi... |
122 |
#endif |
7a0eb1960 KVM: Avoid using ... |
123 |
#ifdef __KVM_HAVE_IOAPIC |
6bf9e962d KVM: in-kernel IO... |
124 |
struct kvm_ioapic_state ioapic; |
51e296258 KVM: Add ifdef in... |
125 |
#endif |
6ceb9d791 KVM: Add get/set ... |
126 127 |
} chip; }; |
c5ff41ce6 KVM: Allow PIT em... |
128 129 130 131 132 133 134 |
/* for KVM_CREATE_PIT2 */ struct kvm_pit_config { __u32 flags; __u32 pad[15]; }; #define KVM_PIT_SPEAKER_DUMMY 1 |
8a45450d0 KVM: Replace enum... |
135 136 137 138 139 140 141 142 143 144 145 146 |
#define KVM_EXIT_UNKNOWN 0 #define KVM_EXIT_EXCEPTION 1 #define KVM_EXIT_IO 2 #define KVM_EXIT_HYPERCALL 3 #define KVM_EXIT_DEBUG 4 #define KVM_EXIT_HLT 5 #define KVM_EXIT_MMIO 6 #define KVM_EXIT_IRQ_WINDOW_OPEN 7 #define KVM_EXIT_SHUTDOWN 8 #define KVM_EXIT_FAIL_ENTRY 9 #define KVM_EXIT_INTR 10 #define KVM_EXIT_SET_TPR 11 |
b209749f5 KVM: local APIC T... |
147 |
#define KVM_EXIT_TPR_ACCESS 12 |
8f2abe6a1 KVM: s390: sie in... |
148 |
#define KVM_EXIT_S390_SIEIC 13 |
e28acfea5 KVM: s390: interc... |
149 |
#define KVM_EXIT_S390_RESET 14 |
b2312f059 KVM: ppc: Add DCR... |
150 |
#define KVM_EXIT_DCR 15 |
c4abb7c9c KVM: x86: Support... |
151 |
#define KVM_EXIT_NMI 16 |
3f5d18a96 KVM: Return to us... |
152 |
#define KVM_EXIT_INTERNAL_ERROR 17 |
ad0a048b0 KVM: PPC: Add OSI... |
153 |
#define KVM_EXIT_OSI 18 |
de56a948b KVM: PPC: Add sup... |
154 |
#define KVM_EXIT_PAPR_HCALL 19 |
3f5d18a96 KVM: Return to us... |
155 156 157 |
/* For KVM_EXIT_INTERNAL_ERROR */ #define KVM_INTERNAL_ERROR_EMULATION 1 |
65ac72640 KVM: VMX: Report ... |
158 |
#define KVM_INTERNAL_ERROR_SIMUL_EX 2 |
6aa8b732c [PATCH] kvm: user... |
159 |
|
9a2bb7f48 KVM: Use a shared... |
160 |
/* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ |
6aa8b732c [PATCH] kvm: user... |
161 162 |
struct kvm_run { /* in */ |
c1150d8cf [PATCH] KVM: Impr... |
163 |
__u8 request_interrupt_window; |
4531220b7 KVM: x86: Rework ... |
164 |
__u8 padding1[7]; |
6aa8b732c [PATCH] kvm: user... |
165 166 |
/* out */ |
6aa8b732c [PATCH] kvm: user... |
167 |
__u32 exit_reason; |
c1150d8cf [PATCH] KVM: Impr... |
168 169 |
__u8 ready_for_interrupt_injection; __u8 if_flag; |
4531220b7 KVM: x86: Rework ... |
170 |
__u8 padding2[2]; |
54810342f [PATCH] kvm: Two-... |
171 172 |
/* in (pre_kvm_run), out (post_kvm_run) */ |
c1150d8cf [PATCH] KVM: Impr... |
173 174 |
__u64 cr8; __u64 apic_base; |
d7b0b5eb3 KVM: s390: Make p... |
175 176 177 178 179 |
#ifdef __KVM_S390 /* the processor status word for s390 */ __u64 psw_mask; /* psw upper half */ __u64 psw_addr; /* psw lower half */ #endif |
6aa8b732c [PATCH] kvm: user... |
180 181 182 |
union { /* KVM_EXIT_UNKNOWN */ struct { |
8eb7d334b KVM: Fold kvm_run... |
183 |
__u64 hardware_exit_reason; |
6aa8b732c [PATCH] kvm: user... |
184 |
} hw; |
8eb7d334b KVM: Fold kvm_run... |
185 186 187 188 |
/* KVM_EXIT_FAIL_ENTRY */ struct { __u64 hardware_entry_failure_reason; } fail_entry; |
6aa8b732c [PATCH] kvm: user... |
189 190 191 192 193 194 |
/* KVM_EXIT_EXCEPTION */ struct { __u32 exception; __u32 error_code; } ex; /* KVM_EXIT_IO */ |
2f8b9ee14 KVM: Make kvm hea... |
195 |
struct { |
6aa8b732c [PATCH] kvm: user... |
196 197 198 199 |
#define KVM_EXIT_IO_IN 0 #define KVM_EXIT_IO_OUT 1 __u8 direction; __u8 size; /* bytes */ |
6aa8b732c [PATCH] kvm: user... |
200 |
__u16 port; |
039576c03 KVM: Avoid guest ... |
201 202 |
__u32 count; __u64 data_offset; /* relative to kvm_run start */ |
6aa8b732c [PATCH] kvm: user... |
203 204 |
} io; struct { |
d0bfb940e KVM: New guest de... |
205 |
struct kvm_debug_exit_arch arch; |
6aa8b732c [PATCH] kvm: user... |
206 207 208 209 210 211 212 213 |
} debug; /* KVM_EXIT_MMIO */ struct { __u64 phys_addr; __u8 data[8]; __u32 len; __u8 is_write; } mmio; |
b4e63f560 KVM: Allow usersp... |
214 215 |
/* KVM_EXIT_HYPERCALL */ struct { |
519ef3534 KVM: add hypercal... |
216 |
__u64 nr; |
b4e63f560 KVM: Allow usersp... |
217 218 219 220 221 |
__u64 args[6]; __u64 ret; __u32 longmode; __u32 pad; } hypercall; |
b209749f5 KVM: local APIC T... |
222 223 224 225 226 227 |
/* KVM_EXIT_TPR_ACCESS */ struct { __u64 rip; __u32 is_write; __u32 pad; } tpr_access; |
8f2abe6a1 KVM: s390: sie in... |
228 229 230 |
/* KVM_EXIT_S390_SIEIC */ struct { __u8 icptcode; |
8f2abe6a1 KVM: s390: sie in... |
231 232 233 |
__u16 ipa; __u32 ipb; } s390_sieic; |
e28acfea5 KVM: s390: interc... |
234 235 236 237 238 239 240 |
/* KVM_EXIT_S390_RESET */ #define KVM_S390_RESET_POR 1 #define KVM_S390_RESET_CLEAR 2 #define KVM_S390_RESET_SUBSYSTEM 4 #define KVM_S390_RESET_CPU_INIT 8 #define KVM_S390_RESET_IPL 16 __u64 s390_reset_flags; |
b2312f059 KVM: ppc: Add DCR... |
241 242 243 244 245 246 |
/* KVM_EXIT_DCR */ struct { __u32 dcrn; __u32 data; __u8 is_write; } dcr; |
3f5d18a96 KVM: Return to us... |
247 248 |
struct { __u32 suberror; |
a9c7399d6 KVM: Allow intern... |
249 250 251 |
/* Available with KVM_CAP_INTERNAL_ERROR_DATA: */ __u32 ndata; __u64 data[16]; |
3f5d18a96 KVM: Return to us... |
252 |
} internal; |
ad0a048b0 KVM: PPC: Add OSI... |
253 254 255 256 |
/* KVM_EXIT_OSI */ struct { __u64 gprs[32]; } osi; |
de56a948b KVM: PPC: Add sup... |
257 258 259 260 261 |
struct { __u64 nr; __u64 ret; __u64 args[9]; } papr_hcall; |
24cbc7e9c KVM: Future-proof... |
262 263 |
/* Fix the size of the union. */ char padding[256]; |
6aa8b732c [PATCH] kvm: user... |
264 265 |
}; }; |
5f94c1741 KVM: Add coalesce... |
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
/* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */ struct kvm_coalesced_mmio_zone { __u64 addr; __u32 size; __u32 pad; }; struct kvm_coalesced_mmio { __u64 phys_addr; __u32 len; __u32 pad; __u8 data[8]; }; struct kvm_coalesced_mmio_ring { __u32 first, last; struct kvm_coalesced_mmio coalesced_mmio[0]; }; #define KVM_COALESCED_MMIO_MAX \ ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / \ sizeof(struct kvm_coalesced_mmio)) |
6aa8b732c [PATCH] kvm: user... |
289 290 291 292 |
/* for KVM_TRANSLATE */ struct kvm_translation { /* in */ __u64 linear_address; |
6aa8b732c [PATCH] kvm: user... |
293 294 295 296 297 298 |
/* out */ __u64 physical_address; __u8 valid; __u8 writeable; __u8 usermode; |
8cd133073 [PATCH] kvm: Fix ... |
299 |
__u8 pad[5]; |
6aa8b732c [PATCH] kvm: user... |
300 301 302 303 304 |
}; /* for KVM_INTERRUPT */ struct kvm_interrupt { /* in */ |
6aa8b732c [PATCH] kvm: user... |
305 306 |
__u32 irq; }; |
6aa8b732c [PATCH] kvm: user... |
307 308 309 |
/* for KVM_GET_DIRTY_LOG */ struct kvm_dirty_log { __u32 slot; |
2f8b9ee14 KVM: Make kvm hea... |
310 |
__u32 padding1; |
6aa8b732c [PATCH] kvm: user... |
311 312 |
union { void __user *dirty_bitmap; /* one bit per page */ |
2f8b9ee14 KVM: Make kvm hea... |
313 |
__u64 padding2; |
6aa8b732c [PATCH] kvm: user... |
314 315 |
}; }; |
1961d276c KVM: Add guest mo... |
316 317 318 319 320 |
/* for KVM_SET_SIGNAL_MASK */ struct kvm_signal_mask { __u32 len; __u8 sigset[0]; }; |
b209749f5 KVM: local APIC T... |
321 322 323 324 325 326 |
/* for KVM_TPR_ACCESS_REPORTING */ struct kvm_tpr_access_ctl { __u32 enabled; __u32 flags; __u32 reserved[8]; }; |
b93463aa5 KVM: Accelerated ... |
327 328 329 330 |
/* for KVM_SET_VAPIC_ADDR */ struct kvm_vapic_addr { __u64 vapic_addr; }; |
62d9f0dbc KVM: add ioctls t... |
331 332 333 334 335 336 337 338 339 340 341 |
/* for KVM_SET_MPSTATE */ #define KVM_MP_STATE_RUNNABLE 0 #define KVM_MP_STATE_UNINITIALIZED 1 #define KVM_MP_STATE_INIT_RECEIVED 2 #define KVM_MP_STATE_HALTED 3 #define KVM_MP_STATE_SIPI_RECEIVED 4 struct kvm_mp_state { __u32 mp_state; }; |
b0c632db6 KVM: s390: arch b... |
342 343 344 345 |
struct kvm_s390_psw { __u64 mask; __u64 addr; }; |
ba5c1e9b6 KVM: s390: interr... |
346 347 348 349 350 351 352 353 |
/* valid values for type in kvm_s390_interrupt */ #define KVM_S390_SIGP_STOP 0xfffe0000u #define KVM_S390_PROGRAM_INT 0xfffe0001u #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u #define KVM_S390_RESTART 0xfffe0003u #define KVM_S390_INT_VIRTIO 0xffff2603u #define KVM_S390_INT_SERVICE 0xffff2401u #define KVM_S390_INT_EMERGENCY 0xffff1201u |
7697e71f7 KVM: s390: implem... |
354 |
#define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u |
ba5c1e9b6 KVM: s390: interr... |
355 356 357 358 359 360 |
struct kvm_s390_interrupt { __u32 type; __u32 parm; __u64 parm64; }; |
d0bfb940e KVM: New guest de... |
361 362 363 364 365 366 367 368 369 370 |
/* for KVM_SET_GUEST_DEBUG */ #define KVM_GUESTDBG_ENABLE 0x00000001 #define KVM_GUESTDBG_SINGLESTEP 0x00000002 struct kvm_guest_debug { __u32 control; __u32 pad; struct kvm_guest_debug_arch arch; }; |
d34e6b175 KVM: add ioeventf... |
371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 |
enum { kvm_ioeventfd_flag_nr_datamatch, kvm_ioeventfd_flag_nr_pio, kvm_ioeventfd_flag_nr_deassign, kvm_ioeventfd_flag_nr_max, }; #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) #define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign) #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1) struct kvm_ioeventfd { __u64 datamatch; __u64 addr; /* legal pio/mmio address */ __u32 len; /* 1, 2, 4, or 8 bytes */ __s32 fd; __u32 flags; __u8 pad[36]; }; |
71fbfd5f3 KVM: Add support ... |
392 393 394 395 396 397 398 399 |
/* for KVM_ENABLE_CAP */ struct kvm_enable_cap { /* in */ __u32 cap; __u32 flags; __u64 args[4]; __u8 pad[64]; }; |
15711e9c9 KVM: PPC: Add get... |
400 401 402 403 404 405 406 |
/* for KVM_PPC_GET_PVINFO */ struct kvm_ppc_pvinfo { /* out */ __u32 flags; __u32 hcall[4]; __u8 pad[108]; }; |
6aa8b732c [PATCH] kvm: user... |
407 |
#define KVMIO 0xAE |
f17abe9a4 KVM: Create an in... |
408 409 410 |
/* * ioctls for /dev/kvm fds: */ |
739872c56 KVM: Renumber ioctls |
411 412 413 |
#define KVM_GET_API_VERSION _IO(KVMIO, 0x00) #define KVM_CREATE_VM _IO(KVMIO, 0x01) /* returns a VM fd */ #define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list) |
b0c632db6 KVM: s390: arch b... |
414 415 |
#define KVM_S390_ENABLE_SIE _IO(KVMIO, 0x06) |
5d308f455 KVM: Add method t... |
416 417 418 419 420 |
/* * Check if a kvm extension is available. Argument is extension number, * return is 1 (yes) or 0 (no, sorry). */ #define KVM_CHECK_EXTENSION _IO(KVMIO, 0x03) |
07c45a366 KVM: Allow kernel... |
421 422 423 424 |
/* * Get size for mmap(vcpu_fd) */ #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04) /* in bytes */ |
674eea0fc KVM: Make the sup... |
425 |
#define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2) |
c54d2aba2 KVM: Reorder IOCT... |
426 427 428 |
#define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06 #define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07 #define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08 |
f17abe9a4 KVM: Create an in... |
429 |
/* |
85f455f7d KVM: Add support ... |
430 431 432 |
* Extension capability list. */ #define KVM_CAP_IRQCHIP 0 |
b6958ce44 KVM: Emulate hlt ... |
433 |
#define KVM_CAP_HLT 1 |
82ce2c968 KVM: Allow dynami... |
434 |
#define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2 |
6fc138d22 KVM: Support assi... |
435 |
#define KVM_CAP_USER_MEMORY 3 |
cbc940229 KVM: Add ioctl to... |
436 |
#define KVM_CAP_SET_TSS_ADDR 4 |
b209749f5 KVM: local APIC T... |
437 |
#define KVM_CAP_VAPIC 6 |
674eea0fc KVM: Make the sup... |
438 |
#define KVM_CAP_EXT_CPUID 7 |
18068523d KVM: paravirtuali... |
439 |
#define KVM_CAP_CLOCKSOURCE 8 |
8c3ba334f KVM: x86: Raise t... |
440 |
#define KVM_CAP_NR_VCPUS 9 /* returns recommended max vcpus per vm */ |
a988b910e KVM: Add API for ... |
441 |
#define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */ |
7837699fa KVM: In kernel PI... |
442 |
#define KVM_CAP_PIT 11 |
a28e4f5a6 KVM: add basic pa... |
443 |
#define KVM_CAP_NOP_IO_DELAY 12 |
2f333bcb4 KVM: MMU: hyperca... |
444 |
#define KVM_CAP_PV_MMU 13 |
62d9f0dbc KVM: add ioctls t... |
445 |
#define KVM_CAP_MP_STATE 14 |
5f94c1741 KVM: Add coalesce... |
446 |
#define KVM_CAP_COALESCED_MMIO 15 |
ed8486243 KVM: Advertise sy... |
447 |
#define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ |
7a0eb1960 KVM: Avoid using ... |
448 |
#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT |
4d5c5d0fe KVM: pci device a... |
449 |
#define KVM_CAP_DEVICE_ASSIGNMENT 17 |
8a98f6648 KVM: Move device ... |
450 |
#endif |
62c476c7c KVM: Device Assig... |
451 |
#define KVM_CAP_IOMMU 18 |
7a0eb1960 KVM: Avoid using ... |
452 |
#ifdef __KVM_HAVE_MSI |
6b9cc7fd4 KVM: Enable MSI f... |
453 454 |
#define KVM_CAP_DEVICE_MSI 20 #endif |
1a811b616 KVM: Advertise th... |
455 456 |
/* Bug in KVM_SET_USER_MEMORY_REGION fixed: */ #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 |
7a0eb1960 KVM: Avoid using ... |
457 |
#ifdef __KVM_HAVE_USER_NMI |
4531220b7 KVM: x86: Rework ... |
458 459 |
#define KVM_CAP_USER_NMI 22 #endif |
91b2ae773 KVM: Avoid using ... |
460 |
#ifdef __KVM_HAVE_GUEST_DEBUG |
d0bfb940e KVM: New guest de... |
461 |
#define KVM_CAP_SET_GUEST_DEBUG 23 |
971cc3dcb KVM: Advertise gu... |
462 |
#endif |
91b2ae773 KVM: Avoid using ... |
463 |
#ifdef __KVM_HAVE_PIT |
52d939a0b KVM: PIT: provide... |
464 465 |
#define KVM_CAP_REINJECT_CONTROL 24 #endif |
91b2ae773 KVM: Avoid using ... |
466 |
#ifdef __KVM_HAVE_IOAPIC |
399ec807d KVM: Userspace co... |
467 468 |
#define KVM_CAP_IRQ_ROUTING 25 #endif |
4925663a0 KVM: Report IRQ i... |
469 |
#define KVM_CAP_IRQ_INJECT_STATUS 26 |
2df8a40bc KVM: define KVM_C... |
470 471 472 |
#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT #define KVM_CAP_DEVICE_DEASSIGNMENT 27 #endif |
d510d6cc6 KVM: Enable MSI-X... |
473 474 475 |
#ifdef __KVM_HAVE_MSIX #define KVM_CAP_DEVICE_MSIX 28 #endif |
e56d532f2 KVM: Device assig... |
476 |
#define KVM_CAP_ASSIGN_DEV_IRQ 29 |
4cd481f68 KVM: Fix overlapp... |
477 478 |
/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */ #define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30 |
890ca9aef KVM: Add MCE support |
479 480 481 |
#ifdef __KVM_HAVE_MCE #define KVM_CAP_MCE 31 #endif |
721eecbf4 KVM: irqfd |
482 |
#define KVM_CAP_IRQFD 32 |
c5ff41ce6 KVM: Allow PIT em... |
483 484 485 |
#ifdef __KVM_HAVE_PIT #define KVM_CAP_PIT2 33 #endif |
73880c80a KVM: Break depend... |
486 |
#define KVM_CAP_SET_BOOT_CPU_ID 34 |
e9f427573 KVM: PIT support ... |
487 488 489 |
#ifdef __KVM_HAVE_PIT_STATE2 #define KVM_CAP_PIT_STATE2 35 #endif |
d34e6b175 KVM: add ioeventf... |
490 |
#define KVM_CAP_IOEVENTFD 36 |
b927a3cec KVM: VMX: Introdu... |
491 |
#define KVM_CAP_SET_IDENTITY_MAP_ADDR 37 |
ffde22ac5 KVM: Xen PV-on-HV... |
492 493 494 |
#ifdef __KVM_HAVE_XEN_HVM #define KVM_CAP_XEN_HVM 38 #endif |
afbcf7ab8 KVM: allow usersp... |
495 |
#define KVM_CAP_ADJUST_CLOCK 39 |
a9c7399d6 KVM: Allow intern... |
496 |
#define KVM_CAP_INTERNAL_ERROR_DATA 40 |
3cfc3092f KVM: x86: Add KVM... |
497 498 499 |
#ifdef __KVM_HAVE_VCPU_EVENTS #define KVM_CAP_VCPU_EVENTS 41 #endif |
d7b0b5eb3 KVM: s390: Make p... |
500 |
#define KVM_CAP_S390_PSW 42 |
e15a11370 powerpc/kvm: Sync... |
501 |
#define KVM_CAP_PPC_SEGSTATE 43 |
55cd8e5a4 KVM: Implement ba... |
502 |
#define KVM_CAP_HYPERV 44 |
10388a071 KVM: Add HYPER-V ... |
503 |
#define KVM_CAP_HYPERV_VAPIC 45 |
c25bc1638 KVM: Implement No... |
504 |
#define KVM_CAP_HYPERV_SPIN 46 |
ab9f4ecbb KVM: enable PCI m... |
505 |
#define KVM_CAP_PCI_SEGMENT 47 |
c10207fe8 KVM: PPC: Add cap... |
506 |
#define KVM_CAP_PPC_PAIRED_SINGLES 48 |
48005f64d KVM: x86: Save&re... |
507 |
#define KVM_CAP_INTR_SHADOW 49 |
a1efbe77c KVM: x86: Add sup... |
508 509 510 |
#ifdef __KVM_HAVE_DEBUGREGS #define KVM_CAP_DEBUGREGS 50 #endif |
d2be1651b KVM: x86: Add KVM... |
511 |
#define KVM_CAP_X86_ROBUST_SINGLESTEP 51 |
ad0a048b0 KVM: PPC: Add OSI... |
512 |
#define KVM_CAP_PPC_OSI 52 |
18978768d KVM: PPC: Allow u... |
513 |
#define KVM_CAP_PPC_UNSET_IRQ 53 |
71fbfd5f3 KVM: Add support ... |
514 |
#define KVM_CAP_ENABLE_CAP 54 |
2d5b5a665 KVM: x86: XSAVE/X... |
515 516 517 518 519 520 |
#ifdef __KVM_HAVE_XSAVE #define KVM_CAP_XSAVE 55 #endif #ifdef __KVM_HAVE_XCRS #define KVM_CAP_XCRS 56 #endif |
15711e9c9 KVM: PPC: Add get... |
521 |
#define KVM_CAP_PPC_GET_PVINFO 57 |
7b4203e8c KVM: PPC: Expose ... |
522 |
#define KVM_CAP_PPC_IRQ_LEVEL 58 |
344d9588a KVM: Add PV MSR t... |
523 |
#define KVM_CAP_ASYNC_PF 59 |
92a1f12d2 KVM: X86: Impleme... |
524 525 |
#define KVM_CAP_TSC_CONTROL 60 #define KVM_CAP_GET_TSC_KHZ 61 |
5ce941ee4 KVM: PPC: booke: ... |
526 |
#define KVM_CAP_PPC_BOOKE_SREGS 62 |
54738c097 KVM: PPC: Acceler... |
527 |
#define KVM_CAP_SPAPR_TCE 63 |
371fefd6f KVM: PPC: Allow b... |
528 |
#define KVM_CAP_PPC_SMT 64 |
aa04b4cc5 KVM: PPC: Allocat... |
529 |
#define KVM_CAP_PPC_RMA 65 |
8c3ba334f KVM: x86: Raise t... |
530 |
#define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */ |
930b412a0 KVM: PPC: Enable ... |
531 |
#define KVM_CAP_PPC_PAPR 68 |
b6cf8788a [S390] kvm: exten... |
532 |
#define KVM_CAP_S390_GMAP 71 |
399ec807d KVM: Userspace co... |
533 534 535 536 537 538 539 |
#ifdef KVM_CAP_IRQ_ROUTING struct kvm_irq_routing_irqchip { __u32 irqchip; __u32 pin; }; |
79950e107 KVM: Use irq rout... |
540 541 542 543 544 545 |
struct kvm_irq_routing_msi { __u32 address_lo; __u32 address_hi; __u32 data; __u32 pad; }; |
399ec807d KVM: Userspace co... |
546 547 |
/* gsi routing entry types */ #define KVM_IRQ_ROUTING_IRQCHIP 1 |
79950e107 KVM: Use irq rout... |
548 |
#define KVM_IRQ_ROUTING_MSI 2 |
399ec807d KVM: Userspace co... |
549 550 551 552 553 554 555 556 |
struct kvm_irq_routing_entry { __u32 gsi; __u32 type; __u32 flags; __u32 pad; union { struct kvm_irq_routing_irqchip irqchip; |
79950e107 KVM: Use irq rout... |
557 |
struct kvm_irq_routing_msi msi; |
399ec807d KVM: Userspace co... |
558 559 560 561 562 563 564 565 566 567 568 |
__u32 pad[8]; } u; }; struct kvm_irq_routing { __u32 nr; __u32 flags; struct kvm_irq_routing_entry entries[0]; }; #endif |
85f455f7d KVM: Add support ... |
569 |
|
890ca9aef KVM: Add MCE support |
570 571 572 573 574 575 576 577 578 579 580 581 |
#ifdef KVM_CAP_MCE /* x86 MCE */ struct kvm_x86_mce { __u64 status; __u64 addr; __u64 misc; __u64 mcg_status; __u8 bank; __u8 pad1[7]; __u64 pad2[3]; }; #endif |
ffde22ac5 KVM: Xen PV-on-HV... |
582 583 584 585 586 587 588 589 590 591 592 |
#ifdef KVM_CAP_XEN_HVM struct kvm_xen_hvm_config { __u32 flags; __u32 msr; __u64 blob_addr_32; __u64 blob_addr_64; __u8 blob_size_32; __u8 blob_size_64; __u8 pad2[30]; }; #endif |
721eecbf4 KVM: irqfd |
593 594 595 596 597 598 599 600 |
#define KVM_IRQFD_FLAG_DEASSIGN (1 << 0) struct kvm_irqfd { __u32 fd; __u32 gsi; __u32 flags; __u8 pad[20]; }; |
afbcf7ab8 KVM: allow usersp... |
601 602 603 604 605 |
struct kvm_clock_data { __u64 clock; __u32 flags; __u32 pad[9]; }; |
85f455f7d KVM: Add support ... |
606 |
/* |
f17abe9a4 KVM: Create an in... |
607 608 |
* ioctls for VM fds */ |
c54d2aba2 KVM: Reorder IOCT... |
609 |
#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) |
bccf2150f KVM: Per-vcpu inodes |
610 611 612 613 |
/* * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns * a vcpu fd. */ |
c54d2aba2 KVM: Reorder IOCT... |
614 615 |
#define KVM_CREATE_VCPU _IO(KVMIO, 0x41) #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log) |
a1f4d3950 KVM: Remove memor... |
616 |
/* KVM_SET_MEMORY_ALIAS is obsolete: */ |
c54d2aba2 KVM: Reorder IOCT... |
617 618 619 620 |
#define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias) #define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44) #define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45) #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, \ |
6a4a98397 KVM: Reorder ioct... |
621 |
struct kvm_userspace_memory_region) |
c54d2aba2 KVM: Reorder IOCT... |
622 623 |
#define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) |
85f455f7d KVM: Add support ... |
624 |
/* Device model IOC */ |
c54d2aba2 KVM: Reorder IOCT... |
625 626 627 628 629 630 631 632 |
#define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) #define KVM_GET_IRQCHIP _IOWR(KVMIO, 0x62, struct kvm_irqchip) #define KVM_SET_IRQCHIP _IOR(KVMIO, 0x63, struct kvm_irqchip) #define KVM_CREATE_PIT _IO(KVMIO, 0x64) #define KVM_GET_PIT _IOWR(KVMIO, 0x65, struct kvm_pit_state) #define KVM_SET_PIT _IOR(KVMIO, 0x66, struct kvm_pit_state) #define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level) |
5f94c1741 KVM: Add coalesce... |
633 634 635 636 |
#define KVM_REGISTER_COALESCED_MMIO \ _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) #define KVM_UNREGISTER_COALESCED_MMIO \ _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) |
c54d2aba2 KVM: Reorder IOCT... |
637 638 639 |
#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \ struct kvm_assigned_pci_dev) #define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing) |
e56d532f2 KVM: Device assig... |
640 |
/* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */ |
c54d2aba2 KVM: Reorder IOCT... |
641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 |
#define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70 #define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq) #define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71) #define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \ struct kvm_assigned_pci_dev) #define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, \ struct kvm_assigned_msix_nr) #define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, \ struct kvm_assigned_msix_entry) #define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq) #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) #define KVM_IOEVENTFD _IOW(KVMIO, 0x79, struct kvm_ioeventfd) #define KVM_XEN_HVM_CONFIG _IOW(KVMIO, 0x7a, struct kvm_xen_hvm_config) #define KVM_SET_CLOCK _IOW(KVMIO, 0x7b, struct kvm_clock_data) #define KVM_GET_CLOCK _IOR(KVMIO, 0x7c, struct kvm_clock_data) /* Available with KVM_CAP_PIT_STATE2 */ #define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2) #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) |
15711e9c9 KVM: PPC: Add get... |
661 662 |
/* Available with KVM_CAP_PPC_GET_PVINFO */ #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo) |
92a1f12d2 KVM: X86: Impleme... |
663 664 665 |
/* Available with KVM_CAP_TSC_CONTROL */ #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) |
bccf2150f KVM: Per-vcpu inodes |
666 667 668 669 |
/* * ioctls for vcpu fds */ |
739872c56 KVM: Renumber ioctls |
670 671 672 673 674 675 676 |
#define KVM_RUN _IO(KVMIO, 0x80) #define KVM_GET_REGS _IOR(KVMIO, 0x81, struct kvm_regs) #define KVM_SET_REGS _IOW(KVMIO, 0x82, struct kvm_regs) #define KVM_GET_SREGS _IOR(KVMIO, 0x83, struct kvm_sregs) #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs) #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation) #define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt) |
d0bfb940e KVM: New guest de... |
677 |
/* KVM_DEBUG_GUEST is no longer supported, use KVM_SET_GUEST_DEBUG instead */ |
c54d2aba2 KVM: Reorder IOCT... |
678 |
#define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87 |
739872c56 KVM: Renumber ioctls |
679 680 681 |
#define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs) #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs) #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid) |
1961d276c KVM: Add guest mo... |
682 |
#define KVM_SET_SIGNAL_MASK _IOW(KVMIO, 0x8b, struct kvm_signal_mask) |
b8836737d KVM: Add fpu get/... |
683 684 |
#define KVM_GET_FPU _IOR(KVMIO, 0x8c, struct kvm_fpu) #define KVM_SET_FPU _IOW(KVMIO, 0x8d, struct kvm_fpu) |
96ad2cc61 KVM: in-kernel LA... |
685 686 |
#define KVM_GET_LAPIC _IOR(KVMIO, 0x8e, struct kvm_lapic_state) #define KVM_SET_LAPIC _IOW(KVMIO, 0x8f, struct kvm_lapic_state) |
077167174 KVM: Enhance gues... |
687 688 |
#define KVM_SET_CPUID2 _IOW(KVMIO, 0x90, struct kvm_cpuid2) #define KVM_GET_CPUID2 _IOWR(KVMIO, 0x91, struct kvm_cpuid2) |
b209749f5 KVM: local APIC T... |
689 |
/* Available with KVM_CAP_VAPIC */ |
c54d2aba2 KVM: Reorder IOCT... |
690 |
#define KVM_TPR_ACCESS_REPORTING _IOWR(KVMIO, 0x92, struct kvm_tpr_access_ctl) |
b93463aa5 KVM: Accelerated ... |
691 692 |
/* Available with KVM_CAP_VAPIC */ #define KVM_SET_VAPIC_ADDR _IOW(KVMIO, 0x93, struct kvm_vapic_addr) |
ba5c1e9b6 KVM: s390: interr... |
693 694 |
/* valid for virtual machine (for floating interrupt)_and_ vcpu */ #define KVM_S390_INTERRUPT _IOW(KVMIO, 0x94, struct kvm_s390_interrupt) |
b0c632db6 KVM: s390: arch b... |
695 696 697 698 699 700 701 |
/* store status for s390 */ #define KVM_S390_STORE_STATUS_NOADDR (-1ul) #define KVM_S390_STORE_STATUS_PREFIXED (-2ul) #define KVM_S390_STORE_STATUS _IOW(KVMIO, 0x95, unsigned long) /* initial ipl psw for s390 */ #define KVM_S390_SET_INITIAL_PSW _IOW(KVMIO, 0x96, struct kvm_s390_psw) /* initial reset for s390 */ |
c54d2aba2 KVM: Reorder IOCT... |
702 |
#define KVM_S390_INITIAL_RESET _IO(KVMIO, 0x97) |
62d9f0dbc KVM: add ioctls t... |
703 704 |
#define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state) #define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state) |
c4abb7c9c KVM: x86: Support... |
705 |
/* Available with KVM_CAP_NMI */ |
c54d2aba2 KVM: Reorder IOCT... |
706 |
#define KVM_NMI _IO(KVMIO, 0x9a) |
d0bfb940e KVM: New guest de... |
707 708 |
/* Available with KVM_CAP_SET_GUEST_DEBUG */ #define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug) |
890ca9aef KVM: Add MCE support |
709 710 711 712 |
/* MCE for x86 */ #define KVM_X86_SETUP_MCE _IOW(KVMIO, 0x9c, __u64) #define KVM_X86_GET_MCE_CAP_SUPPORTED _IOR(KVMIO, 0x9d, __u64) #define KVM_X86_SET_MCE _IOW(KVMIO, 0x9e, struct kvm_x86_mce) |
c54d2aba2 KVM: Reorder IOCT... |
713 |
/* IA64 stack access */ |
e9a999fe1 KVM: ia64: stack ... |
714 715 |
#define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *) #define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *) |
3cfc3092f KVM: x86: Add KVM... |
716 717 718 |
/* Available with KVM_CAP_VCPU_EVENTS */ #define KVM_GET_VCPU_EVENTS _IOR(KVMIO, 0x9f, struct kvm_vcpu_events) #define KVM_SET_VCPU_EVENTS _IOW(KVMIO, 0xa0, struct kvm_vcpu_events) |
a1efbe77c KVM: x86: Add sup... |
719 720 721 |
/* Available with KVM_CAP_DEBUGREGS */ #define KVM_GET_DEBUGREGS _IOR(KVMIO, 0xa1, struct kvm_debugregs) #define KVM_SET_DEBUGREGS _IOW(KVMIO, 0xa2, struct kvm_debugregs) |
71fbfd5f3 KVM: Add support ... |
722 |
#define KVM_ENABLE_CAP _IOW(KVMIO, 0xa3, struct kvm_enable_cap) |
2d5b5a665 KVM: x86: XSAVE/X... |
723 724 725 726 727 728 |
/* Available with KVM_CAP_XSAVE */ #define KVM_GET_XSAVE _IOR(KVMIO, 0xa4, struct kvm_xsave) #define KVM_SET_XSAVE _IOW(KVMIO, 0xa5, struct kvm_xsave) /* Available with KVM_CAP_XCRS */ #define KVM_GET_XCRS _IOR(KVMIO, 0xa6, struct kvm_xcrs) #define KVM_SET_XCRS _IOW(KVMIO, 0xa7, struct kvm_xcrs) |
54738c097 KVM: PPC: Acceler... |
729 |
#define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce) |
aa04b4cc5 KVM: PPC: Allocat... |
730 731 |
/* Available with KVM_CAP_RMA */ #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) |
d98e63463 KVM: Move KVM TRA... |
732 |
|
e56d532f2 KVM: Device assig... |
733 |
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) |
4d5c5d0fe KVM: pci device a... |
734 735 736 737 738 |
struct kvm_assigned_pci_dev { __u32 assigned_dev_id; __u32 busnr; __u32 devfn; __u32 flags; |
ab9f4ecbb KVM: enable PCI m... |
739 |
__u32 segnr; |
bb45e202e KVM: Future-proof... |
740 |
union { |
ab9f4ecbb KVM: enable PCI m... |
741 |
__u32 reserved[11]; |
bb45e202e KVM: Future-proof... |
742 |
}; |
4d5c5d0fe KVM: pci device a... |
743 |
}; |
e56d532f2 KVM: Device assig... |
744 745 746 747 748 749 750 751 752 753 |
#define KVM_DEV_IRQ_HOST_INTX (1 << 0) #define KVM_DEV_IRQ_HOST_MSI (1 << 1) #define KVM_DEV_IRQ_HOST_MSIX (1 << 2) #define KVM_DEV_IRQ_GUEST_INTX (1 << 8) #define KVM_DEV_IRQ_GUEST_MSI (1 << 9) #define KVM_DEV_IRQ_GUEST_MSIX (1 << 10) #define KVM_DEV_IRQ_HOST_MASK 0x00ff #define KVM_DEV_IRQ_GUEST_MASK 0xff00 |
4d5c5d0fe KVM: pci device a... |
754 755 |
struct kvm_assigned_irq { __u32 assigned_dev_id; |
91e3d71db KVM: Clarify KVM_... |
756 |
__u32 host_irq; /* ignored (legacy field) */ |
4d5c5d0fe KVM: pci device a... |
757 758 |
__u32 guest_irq; __u32 flags; |
bb45e202e KVM: Future-proof... |
759 760 761 |
union { __u32 reserved[12]; }; |
4d5c5d0fe KVM: pci device a... |
762 |
}; |
c1e015142 KVM: Ioctls for i... |
763 764 765 766 767 |
struct kvm_assigned_msix_nr { __u32 assigned_dev_id; __u16 entry_nr; __u16 padding; }; |
e73333914 KVM: Downsize max... |
768 |
#define KVM_MAX_MSIX_PER_DEV 256 |
c1e015142 KVM: Ioctls for i... |
769 770 771 772 773 774 |
struct kvm_assigned_msix_entry { __u32 assigned_dev_id; __u32 gsi; __u16 entry; /* The index of entry in the MSI-X table */ __u16 padding[3]; }; |
c54d2aba2 KVM: Reorder IOCT... |
775 |
#endif /* __LINUX_KVM_H */ |