kvm.h (165fa4091e97bfafbf394acb446623b92998175f) kvm.h (7a52ce8a160739c5d37469b0e344d3239eb86462)
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 */

--- 133 unchanged lines hidden (view full) ---

142/* for KVM_CREATE_PIT2 */
143struct kvm_pit_config {
144 __u32 flags;
145 __u32 pad[15];
146};
147
148#define KVM_PIT_SPEAKER_DUMMY 1
149
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 */

--- 133 unchanged lines hidden (view full) ---

142/* for KVM_CREATE_PIT2 */
143struct kvm_pit_config {
144 __u32 flags;
145 __u32 pad[15];
146};
147
148#define KVM_PIT_SPEAKER_DUMMY 1
149
150struct kvm_s390_skeys {
151 __u64 start_gfn;
152 __u64 count;
153 __u64 skeydata_addr;
154 __u32 flags;
155 __u32 reserved[9];
156};
157#define KVM_S390_GET_SKEYS_NONE 1
158#define KVM_S390_SKEYS_MAX 1048576
159
150#define KVM_EXIT_UNKNOWN 0
151#define KVM_EXIT_EXCEPTION 1
152#define KVM_EXIT_IO 2
153#define KVM_EXIT_HYPERCALL 3
154#define KVM_EXIT_DEBUG 4
155#define KVM_EXIT_HLT 5
156#define KVM_EXIT_MMIO 6
157#define KVM_EXIT_IRQ_WINDOW_OPEN 7

--- 9 unchanged lines hidden (view full) ---

167#define KVM_EXIT_INTERNAL_ERROR 17
168#define KVM_EXIT_OSI 18
169#define KVM_EXIT_PAPR_HCALL 19
170#define KVM_EXIT_S390_UCONTROL 20
171#define KVM_EXIT_WATCHDOG 21
172#define KVM_EXIT_S390_TSCH 22
173#define KVM_EXIT_EPR 23
174#define KVM_EXIT_SYSTEM_EVENT 24
160#define KVM_EXIT_UNKNOWN 0
161#define KVM_EXIT_EXCEPTION 1
162#define KVM_EXIT_IO 2
163#define KVM_EXIT_HYPERCALL 3
164#define KVM_EXIT_DEBUG 4
165#define KVM_EXIT_HLT 5
166#define KVM_EXIT_MMIO 6
167#define KVM_EXIT_IRQ_WINDOW_OPEN 7

--- 9 unchanged lines hidden (view full) ---

177#define KVM_EXIT_INTERNAL_ERROR 17
178#define KVM_EXIT_OSI 18
179#define KVM_EXIT_PAPR_HCALL 19
180#define KVM_EXIT_S390_UCONTROL 20
181#define KVM_EXIT_WATCHDOG 21
182#define KVM_EXIT_S390_TSCH 22
183#define KVM_EXIT_EPR 23
184#define KVM_EXIT_SYSTEM_EVENT 24
185#define KVM_EXIT_S390_STSI 25
175
176/* For KVM_EXIT_INTERNAL_ERROR */
177/* Emulate instruction failed. */
178#define KVM_INTERNAL_ERROR_EMULATION 1
179/* Encounter unexpected simultaneous exceptions. */
180#define KVM_INTERNAL_ERROR_SIMUL_EX 2
181/* Encounter unexpected vm-exit due to delivery event. */
182#define KVM_INTERNAL_ERROR_DELIVERY_EV 3

--- 121 unchanged lines hidden (view full) ---

304 } epr;
305 /* KVM_EXIT_SYSTEM_EVENT */
306 struct {
307#define KVM_SYSTEM_EVENT_SHUTDOWN 1
308#define KVM_SYSTEM_EVENT_RESET 2
309 __u32 type;
310 __u64 flags;
311 } system_event;
186
187/* For KVM_EXIT_INTERNAL_ERROR */
188/* Emulate instruction failed. */
189#define KVM_INTERNAL_ERROR_EMULATION 1
190/* Encounter unexpected simultaneous exceptions. */
191#define KVM_INTERNAL_ERROR_SIMUL_EX 2
192/* Encounter unexpected vm-exit due to delivery event. */
193#define KVM_INTERNAL_ERROR_DELIVERY_EV 3

--- 121 unchanged lines hidden (view full) ---

315 } epr;
316 /* KVM_EXIT_SYSTEM_EVENT */
317 struct {
318#define KVM_SYSTEM_EVENT_SHUTDOWN 1
319#define KVM_SYSTEM_EVENT_RESET 2
320 __u32 type;
321 __u64 flags;
322 } system_event;
323 /* KVM_EXIT_S390_STSI */
324 struct {
325 __u64 addr;
326 __u8 ar;
327 __u8 reserved;
328 __u8 fc;
329 __u8 sel1;
330 __u16 sel2;
331 } s390_stsi;
312 /* Fix the size of the union. */
313 char padding[256];
314 };
315
316 /*
317 * shared registers between kvm and userspace.
318 * kvm_valid_regs specifies the register classes set by the host
319 * kvm_dirty_regs specified the register classes dirtied by userspace
320 * struct kvm_sync_regs is architecture specific, as well as the
321 * bits for kvm_valid_regs and kvm_dirty_regs
322 */
323 __u64 kvm_valid_regs;
324 __u64 kvm_dirty_regs;
325 union {
326 struct kvm_sync_regs regs;
332 /* Fix the size of the union. */
333 char padding[256];
334 };
335
336 /*
337 * shared registers between kvm and userspace.
338 * kvm_valid_regs specifies the register classes set by the host
339 * kvm_dirty_regs specified the register classes dirtied by userspace
340 * struct kvm_sync_regs is architecture specific, as well as the
341 * bits for kvm_valid_regs and kvm_dirty_regs
342 */
343 __u64 kvm_valid_regs;
344 __u64 kvm_dirty_regs;
345 union {
346 struct kvm_sync_regs regs;
327 char padding[1024];
347 char padding[2048];
328 } s;
329};
330
331/* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */
332
333struct kvm_coalesced_mmio_zone {
334 __u64 addr;
335 __u32 size;

--- 24 unchanged lines hidden (view full) ---

360 /* out */
361 __u64 physical_address;
362 __u8 valid;
363 __u8 writeable;
364 __u8 usermode;
365 __u8 pad[5];
366};
367
348 } s;
349};
350
351/* for KVM_REGISTER_COALESCED_MMIO / KVM_UNREGISTER_COALESCED_MMIO */
352
353struct kvm_coalesced_mmio_zone {
354 __u64 addr;
355 __u32 size;

--- 24 unchanged lines hidden (view full) ---

380 /* out */
381 __u64 physical_address;
382 __u8 valid;
383 __u8 writeable;
384 __u8 usermode;
385 __u8 pad[5];
386};
387
388/* for KVM_S390_MEM_OP */
389struct kvm_s390_mem_op {
390 /* in */
391 __u64 gaddr; /* the guest address */
392 __u64 flags; /* flags */
393 __u32 size; /* amount of bytes */
394 __u32 op; /* type of operation */
395 __u64 buf; /* buffer in userspace */
396 __u8 ar; /* the access register number */
397 __u8 reserved[31]; /* should be set to 0 */
398};
399/* types for kvm_s390_mem_op->op */
400#define KVM_S390_MEMOP_LOGICAL_READ 0
401#define KVM_S390_MEMOP_LOGICAL_WRITE 1
402/* flags for kvm_s390_mem_op->flags */
403#define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
404#define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
405
368/* for KVM_INTERRUPT */
369struct kvm_interrupt {
370 /* in */
371 __u32 irq;
372};
373
374/* for KVM_GET_DIRTY_LOG */
375struct kvm_dirty_log {

--- 139 unchanged lines hidden (view full) ---

515 struct kvm_s390_extcall_info extcall;
516 struct kvm_s390_prefix_info prefix;
517 struct kvm_s390_stop_info stop;
518 struct kvm_s390_mchk_info mchk;
519 char reserved[64];
520 } u;
521};
522
406/* for KVM_INTERRUPT */
407struct kvm_interrupt {
408 /* in */
409 __u32 irq;
410};
411
412/* for KVM_GET_DIRTY_LOG */
413struct kvm_dirty_log {

--- 139 unchanged lines hidden (view full) ---

553 struct kvm_s390_extcall_info extcall;
554 struct kvm_s390_prefix_info prefix;
555 struct kvm_s390_stop_info stop;
556 struct kvm_s390_mchk_info mchk;
557 char reserved[64];
558 } u;
559};
560
561struct kvm_s390_irq_state {
562 __u64 buf;
563 __u32 flags;
564 __u32 len;
565 __u32 reserved[4];
566};
567
523/* for KVM_SET_GUEST_DEBUG */
524
525#define KVM_GUESTDBG_ENABLE 0x00000001
526#define KVM_GUESTDBG_SINGLESTEP 0x00000002
527
528struct kvm_guest_debug {
529 __u32 control;
530 __u32 pad;

--- 224 unchanged lines hidden (view full) ---

755#define KVM_CAP_S390_IRQCHIP 99
756#define KVM_CAP_IOEVENTFD_NO_LENGTH 100
757#define KVM_CAP_VM_ATTRIBUTES 101
758#define KVM_CAP_ARM_PSCI_0_2 102
759#define KVM_CAP_PPC_FIXUP_HCALL 103
760#define KVM_CAP_PPC_ENABLE_HCALL 104
761#define KVM_CAP_CHECK_EXTENSION_VM 105
762#define KVM_CAP_S390_USER_SIGP 106
568/* for KVM_SET_GUEST_DEBUG */
569
570#define KVM_GUESTDBG_ENABLE 0x00000001
571#define KVM_GUESTDBG_SINGLESTEP 0x00000002
572
573struct kvm_guest_debug {
574 __u32 control;
575 __u32 pad;

--- 224 unchanged lines hidden (view full) ---

800#define KVM_CAP_S390_IRQCHIP 99
801#define KVM_CAP_IOEVENTFD_NO_LENGTH 100
802#define KVM_CAP_VM_ATTRIBUTES 101
803#define KVM_CAP_ARM_PSCI_0_2 102
804#define KVM_CAP_PPC_FIXUP_HCALL 103
805#define KVM_CAP_PPC_ENABLE_HCALL 104
806#define KVM_CAP_CHECK_EXTENSION_VM 105
807#define KVM_CAP_S390_USER_SIGP 106
808#define KVM_CAP_S390_VECTOR_REGISTERS 107
809#define KVM_CAP_S390_MEM_OP 108
810#define KVM_CAP_S390_USER_STSI 109
811#define KVM_CAP_S390_SKEYS 110
812#define KVM_CAP_MIPS_FPU 111
813#define KVM_CAP_MIPS_MSA 112
814#define KVM_CAP_S390_INJECT_IRQ 113
815#define KVM_CAP_S390_IRQ_STATE 114
816#define KVM_CAP_PPC_HWRNG 115
763
764#ifdef KVM_CAP_IRQ_ROUTING
765
766struct kvm_irq_routing_irqchip {
767 __u32 irqchip;
768 __u32 pin;
769};
770

--- 359 unchanged lines hidden (view full) ---

1130/* Available with KVM_CAP_ONE_REG */
1131#define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg)
1132#define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg)
1133/* VM is being stopped by host */
1134#define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
1135#define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
1136#define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
1137#define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
817
818#ifdef KVM_CAP_IRQ_ROUTING
819
820struct kvm_irq_routing_irqchip {
821 __u32 irqchip;
822 __u32 pin;
823};
824

--- 359 unchanged lines hidden (view full) ---

1184/* Available with KVM_CAP_ONE_REG */
1185#define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg)
1186#define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg)
1187/* VM is being stopped by host */
1188#define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
1189#define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
1190#define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
1191#define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
1192/* Available with KVM_CAP_S390_MEM_OP */
1193#define KVM_S390_MEM_OP _IOW(KVMIO, 0xb1, struct kvm_s390_mem_op)
1194/* Available with KVM_CAP_S390_SKEYS */
1195#define KVM_S390_GET_SKEYS _IOW(KVMIO, 0xb2, struct kvm_s390_skeys)
1196#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
1197/* Available with KVM_CAP_S390_INJECT_IRQ */
1198#define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq)
1199/* Available with KVM_CAP_S390_IRQ_STATE */
1200#define KVM_S390_SET_IRQ_STATE _IOW(KVMIO, 0xb5, struct kvm_s390_irq_state)
1201#define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct kvm_s390_irq_state)
1138
1139#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
1140#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
1141#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
1142
1143struct kvm_assigned_pci_dev {
1144 __u32 assigned_dev_id;
1145 __u32 busnr;

--- 44 unchanged lines hidden ---
1202
1203#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
1204#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
1205#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
1206
1207struct kvm_assigned_pci_dev {
1208 __u32 assigned_dev_id;
1209 __u32 busnr;

--- 44 unchanged lines hidden ---