kvm.h (98c710f2d5cdf37f29a267352eb1f3c28cbf369d) | kvm.h (74c98e20a604b9db58284b8727688df70e9bf643) |
---|---|
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 */ --- 204 unchanged lines hidden (view full) --- 213#define KVM_INTERNAL_ERROR_SIMUL_EX 2 214/* Encounter unexpected vm-exit due to delivery event. */ 215#define KVM_INTERNAL_ERROR_DELIVERY_EV 3 216 217/* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ 218struct kvm_run { 219 /* in */ 220 __u8 request_interrupt_window; | 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 */ --- 204 unchanged lines hidden (view full) --- 213#define KVM_INTERNAL_ERROR_SIMUL_EX 2 214/* Encounter unexpected vm-exit due to delivery event. */ 215#define KVM_INTERNAL_ERROR_DELIVERY_EV 3 216 217/* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ 218struct kvm_run { 219 /* in */ 220 __u8 request_interrupt_window; |
221 __u8 padding1[7]; | 221 __u8 immediate_exit; 222 __u8 padding1[6]; |
222 223 /* out */ 224 __u32 exit_reason; 225 __u8 ready_for_interrupt_injection; 226 __u8 if_flag; 227 __u16 flags; 228 229 /* in (pre_kvm_run), out (post_kvm_run) */ --- 416 unchanged lines hidden (view full) --- 646 /* in */ 647 __u32 cap; 648 __u32 flags; 649 __u64 args[4]; 650 __u8 pad[64]; 651}; 652 653/* for KVM_PPC_GET_PVINFO */ | 223 224 /* out */ 225 __u32 exit_reason; 226 __u8 ready_for_interrupt_injection; 227 __u8 if_flag; 228 __u16 flags; 229 230 /* in (pre_kvm_run), out (post_kvm_run) */ --- 416 unchanged lines hidden (view full) --- 647 /* in */ 648 __u32 cap; 649 __u32 flags; 650 __u64 args[4]; 651 __u8 pad[64]; 652}; 653 654/* for KVM_PPC_GET_PVINFO */ |
655 656#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0) 657 |
|
654struct kvm_ppc_pvinfo { 655 /* out */ 656 __u32 flags; 657 __u32 hcall[4]; 658 __u8 pad[108]; 659}; 660 661/* for KVM_PPC_GET_SMMU_INFO */ --- 15 unchanged lines hidden (view full) --- 677 678struct kvm_ppc_smmu_info { 679 __u64 flags; 680 __u32 slb_size; 681 __u32 pad; 682 struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; 683}; 684 | 658struct kvm_ppc_pvinfo { 659 /* out */ 660 __u32 flags; 661 __u32 hcall[4]; 662 __u8 pad[108]; 663}; 664 665/* for KVM_PPC_GET_SMMU_INFO */ --- 15 unchanged lines hidden (view full) --- 681 682struct kvm_ppc_smmu_info { 683 __u64 flags; 684 __u32 slb_size; 685 __u32 pad; 686 struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; 687}; 688 |
685#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0) | 689/* for KVM_PPC_RESIZE_HPT_{PREPARE,COMMIT} */ 690struct kvm_ppc_resize_hpt { 691 __u64 flags; 692 __u32 shift; 693 __u32 pad; 694}; |
686 687#define KVMIO 0xAE 688 689/* machine type bits, to be used as argument to KVM_CREATE_VM */ 690#define KVM_VM_S390_UCONTROL 1 691 692/* on ppc, 0 indicate default, 1 should force HV and 2 PR */ 693#define KVM_VM_PPC_HV 1 694#define KVM_VM_PPC_PR 2 695 | 695 696#define KVMIO 0xAE 697 698/* machine type bits, to be used as argument to KVM_CREATE_VM */ 699#define KVM_VM_S390_UCONTROL 1 700 701/* on ppc, 0 indicate default, 1 should force HV and 2 PR */ 702#define KVM_VM_PPC_HV 1 703#define KVM_VM_PPC_PR 2 704 |
705/* on MIPS, 0 forces trap & emulate, 1 forces VZ ASE */ 706#define KVM_VM_MIPS_TE 0 707#define KVM_VM_MIPS_VZ 1 708 |
|
696#define KVM_S390_SIE_PAGE_OFFSET 1 697 698/* 699 * ioctls for /dev/kvm fds: 700 */ 701#define KVM_GET_API_VERSION _IO(KVMIO, 0x00) 702#define KVM_CREATE_VM _IO(KVMIO, 0x01) /* returns a VM fd */ 703#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list) --- 157 unchanged lines hidden (view full) --- 861#define KVM_CAP_SPLIT_IRQCHIP 121 862#define KVM_CAP_IOEVENTFD_ANY_LENGTH 122 863#define KVM_CAP_HYPERV_SYNIC 123 864#define KVM_CAP_S390_RI 124 865#define KVM_CAP_SPAPR_TCE_64 125 866#define KVM_CAP_ARM_PMU_V3 126 867#define KVM_CAP_VCPU_ATTRIBUTES 127 868#define KVM_CAP_MAX_VCPU_ID 128 | 709#define KVM_S390_SIE_PAGE_OFFSET 1 710 711/* 712 * ioctls for /dev/kvm fds: 713 */ 714#define KVM_GET_API_VERSION _IO(KVMIO, 0x00) 715#define KVM_CREATE_VM _IO(KVMIO, 0x01) /* returns a VM fd */ 716#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list) --- 157 unchanged lines hidden (view full) --- 874#define KVM_CAP_SPLIT_IRQCHIP 121 875#define KVM_CAP_IOEVENTFD_ANY_LENGTH 122 876#define KVM_CAP_HYPERV_SYNIC 123 877#define KVM_CAP_S390_RI 124 878#define KVM_CAP_SPAPR_TCE_64 125 879#define KVM_CAP_ARM_PMU_V3 126 880#define KVM_CAP_VCPU_ATTRIBUTES 127 881#define KVM_CAP_MAX_VCPU_ID 128 |
882#define KVM_CAP_X2APIC_API 129 883#define KVM_CAP_S390_USER_INSTR0 130 884#define KVM_CAP_MSI_DEVID 131 885#define KVM_CAP_PPC_HTM 132 886#define KVM_CAP_SPAPR_RESIZE_HPT 133 887#define KVM_CAP_PPC_MMU_RADIX 134 888#define KVM_CAP_PPC_MMU_HASH_V3 135 889#define KVM_CAP_IMMEDIATE_EXIT 136 890#define KVM_CAP_MIPS_VZ 137 891#define KVM_CAP_MIPS_TE 138 892#define KVM_CAP_MIPS_64BIT 139 893#define KVM_CAP_S390_GS 140 894#define KVM_CAP_S390_AIS 141 895#define KVM_CAP_SPAPR_TCE_VFIO 142 896#define KVM_CAP_X86_GUEST_MWAIT 143 897#define KVM_CAP_ARM_USER_IRQ 144 |
|
869 870#ifdef KVM_CAP_IRQ_ROUTING 871 872struct kvm_irq_routing_irqchip { 873 __u32 irqchip; 874 __u32 pin; 875}; 876 877struct kvm_irq_routing_msi { 878 __u32 address_lo; 879 __u32 address_hi; 880 __u32 data; | 898 899#ifdef KVM_CAP_IRQ_ROUTING 900 901struct kvm_irq_routing_irqchip { 902 __u32 irqchip; 903 __u32 pin; 904}; 905 906struct kvm_irq_routing_msi { 907 __u32 address_lo; 908 __u32 address_hi; 909 __u32 data; |
881 __u32 pad; | 910 union { 911 __u32 pad; 912 __u32 devid; 913 }; |
882}; 883 884struct kvm_irq_routing_s390_adapter { 885 __u64 ind_addr; 886 __u64 summary_addr; 887 __u64 ind_offset; 888 __u32 summary_offset; 889 __u32 adapter_id; --- 70 unchanged lines hidden (view full) --- 960struct kvm_irqfd { 961 __u32 fd; 962 __u32 gsi; 963 __u32 flags; 964 __u32 resamplefd; 965 __u8 pad[16]; 966}; 967 | 914}; 915 916struct kvm_irq_routing_s390_adapter { 917 __u64 ind_addr; 918 __u64 summary_addr; 919 __u64 ind_offset; 920 __u32 summary_offset; 921 __u32 adapter_id; --- 70 unchanged lines hidden (view full) --- 992struct kvm_irqfd { 993 __u32 fd; 994 __u32 gsi; 995 __u32 flags; 996 __u32 resamplefd; 997 __u8 pad[16]; 998}; 999 |
1000/* For KVM_CAP_ADJUST_CLOCK */ 1001 1002/* Do not use 1, KVM_CHECK_EXTENSION returned it before we had flags. */ 1003#define KVM_CLOCK_TSC_STABLE 2 1004 |
|
968struct kvm_clock_data { 969 __u64 clock; 970 __u32 flags; 971 __u32 pad[9]; 972}; 973 | 1005struct kvm_clock_data { 1006 __u64 clock; 1007 __u32 flags; 1008 __u32 pad[9]; 1009}; 1010 |
1011/* For KVM_CAP_SW_TLB */ 1012 |
|
974#define KVM_MMU_FSL_BOOKE_NOHV 0 975#define KVM_MMU_FSL_BOOKE_HV 1 976 977struct kvm_config_tlb { 978 __u64 params; 979 __u64 array; 980 __u32 mmu_type; 981 __u32 array_len; --- 37 unchanged lines hidden (view full) --- 1019 __u64 reg[0]; 1020}; 1021 1022struct kvm_one_reg { 1023 __u64 id; 1024 __u64 addr; 1025}; 1026 | 1013#define KVM_MMU_FSL_BOOKE_NOHV 0 1014#define KVM_MMU_FSL_BOOKE_HV 1 1015 1016struct kvm_config_tlb { 1017 __u64 params; 1018 __u64 array; 1019 __u32 mmu_type; 1020 __u32 array_len; --- 37 unchanged lines hidden (view full) --- 1058 __u64 reg[0]; 1059}; 1060 1061struct kvm_one_reg { 1062 __u64 id; 1063 __u64 addr; 1064}; 1065 |
1066#define KVM_MSI_VALID_DEVID (1U << 0) |
|
1027struct kvm_msi { 1028 __u32 address_lo; 1029 __u32 address_hi; 1030 __u32 data; 1031 __u32 flags; | 1067struct kvm_msi { 1068 __u32 address_lo; 1069 __u32 address_hi; 1070 __u32 data; 1071 __u32 flags; |
1032 __u8 pad[16]; | 1072 __u32 devid; 1073 __u8 pad[12]; |
1033}; 1034 1035struct kvm_arm_device_addr { 1036 __u64 id; 1037 __u64 addr; 1038}; 1039 1040/* --- 12 unchanged lines hidden (view full) --- 1053 __u32 group; /* device-defined */ 1054 __u64 attr; /* group-defined */ 1055 __u64 addr; /* userspace address of attr data */ 1056}; 1057 1058#define KVM_DEV_VFIO_GROUP 1 1059#define KVM_DEV_VFIO_GROUP_ADD 1 1060#define KVM_DEV_VFIO_GROUP_DEL 2 | 1074}; 1075 1076struct kvm_arm_device_addr { 1077 __u64 id; 1078 __u64 addr; 1079}; 1080 1081/* --- 12 unchanged lines hidden (view full) --- 1094 __u32 group; /* device-defined */ 1095 __u64 attr; /* group-defined */ 1096 __u64 addr; /* userspace address of attr data */ 1097}; 1098 1099#define KVM_DEV_VFIO_GROUP 1 1100#define KVM_DEV_VFIO_GROUP_ADD 1 1101#define KVM_DEV_VFIO_GROUP_DEL 2 |
1102#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3 |
|
1061 1062enum kvm_device_type { 1063 KVM_DEV_TYPE_FSL_MPIC_20 = 1, 1064#define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20 1065 KVM_DEV_TYPE_FSL_MPIC_42, 1066#define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42 1067 KVM_DEV_TYPE_XICS, 1068#define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS 1069 KVM_DEV_TYPE_VFIO, 1070#define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO 1071 KVM_DEV_TYPE_ARM_VGIC_V2, 1072#define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2 1073 KVM_DEV_TYPE_FLIC, 1074#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC 1075 KVM_DEV_TYPE_ARM_VGIC_V3, 1076#define KVM_DEV_TYPE_ARM_VGIC_V3 KVM_DEV_TYPE_ARM_VGIC_V3 | 1103 1104enum kvm_device_type { 1105 KVM_DEV_TYPE_FSL_MPIC_20 = 1, 1106#define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20 1107 KVM_DEV_TYPE_FSL_MPIC_42, 1108#define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42 1109 KVM_DEV_TYPE_XICS, 1110#define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS 1111 KVM_DEV_TYPE_VFIO, 1112#define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO 1113 KVM_DEV_TYPE_ARM_VGIC_V2, 1114#define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2 1115 KVM_DEV_TYPE_FLIC, 1116#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC 1117 KVM_DEV_TYPE_ARM_VGIC_V3, 1118#define KVM_DEV_TYPE_ARM_VGIC_V3 KVM_DEV_TYPE_ARM_VGIC_V3 |
1119 KVM_DEV_TYPE_ARM_VGIC_ITS, 1120#define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS |
|
1077 KVM_DEV_TYPE_MAX, 1078}; 1079 | 1121 KVM_DEV_TYPE_MAX, 1122}; 1123 |
1124struct kvm_vfio_spapr_tce { 1125 __s32 groupfd; 1126 __s32 tablefd; 1127}; 1128 |
|
1080/* 1081 * ioctls for VM fds 1082 */ 1083#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) 1084/* 1085 * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns 1086 * a vcpu fd. 1087 */ --- 75 unchanged lines hidden (view full) --- 1163/* Available with KVM_CAP_RMA */ 1164#define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) 1165/* Available with KVM_CAP_PPC_HTAB_FD */ 1166#define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) 1167/* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ 1168#define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr) 1169/* Available with KVM_CAP_PPC_RTAS */ 1170#define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args) | 1129/* 1130 * ioctls for VM fds 1131 */ 1132#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) 1133/* 1134 * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns 1135 * a vcpu fd. 1136 */ --- 75 unchanged lines hidden (view full) --- 1212/* Available with KVM_CAP_RMA */ 1213#define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) 1214/* Available with KVM_CAP_PPC_HTAB_FD */ 1215#define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) 1216/* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ 1217#define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr) 1218/* Available with KVM_CAP_PPC_RTAS */ 1219#define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args) |
1220/* Available with KVM_CAP_SPAPR_RESIZE_HPT */ 1221#define KVM_PPC_RESIZE_HPT_PREPARE _IOR(KVMIO, 0xad, struct kvm_ppc_resize_hpt) 1222#define KVM_PPC_RESIZE_HPT_COMMIT _IOR(KVMIO, 0xae, struct kvm_ppc_resize_hpt) 1223/* Available with KVM_CAP_PPC_RADIX_MMU or KVM_CAP_PPC_HASH_MMU_V3 */ 1224#define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg) 1225/* Available with KVM_CAP_PPC_RADIX_MMU */ 1226#define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info) |
|
1171 1172/* ioctl for vm fd */ 1173#define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) 1174 1175/* ioctls for fds returned by KVM_CREATE_DEVICE */ 1176#define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr) 1177#define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr) 1178#define KVM_HAS_DEVICE_ATTR _IOW(KVMIO, 0xe3, struct kvm_device_attr) --- 129 unchanged lines hidden (view full) --- 1308#define KVM_MAX_MSIX_PER_DEV 256 1309struct kvm_assigned_msix_entry { 1310 __u32 assigned_dev_id; 1311 __u32 gsi; 1312 __u16 entry; /* The index of entry in the MSI-X table */ 1313 __u16 padding[3]; 1314}; 1315 | 1227 1228/* ioctl for vm fd */ 1229#define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) 1230 1231/* ioctls for fds returned by KVM_CREATE_DEVICE */ 1232#define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr) 1233#define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr) 1234#define KVM_HAS_DEVICE_ATTR _IOW(KVMIO, 0xe3, struct kvm_device_attr) --- 129 unchanged lines hidden (view full) --- 1364#define KVM_MAX_MSIX_PER_DEV 256 1365struct kvm_assigned_msix_entry { 1366 __u32 assigned_dev_id; 1367 __u32 gsi; 1368 __u16 entry; /* The index of entry in the MSI-X table */ 1369 __u16 padding[3]; 1370}; 1371 |
1372#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) 1373#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) 1374 1375/* Available with KVM_CAP_ARM_USER_IRQ */ 1376 1377/* Bits for run->s.regs.device_irq_level */ 1378#define KVM_ARM_DEV_EL1_VTIMER (1 << 0) 1379#define KVM_ARM_DEV_EL1_PTIMER (1 << 1) 1380#define KVM_ARM_DEV_PMU (1 << 2) 1381 |
|
1316#endif /* __LINUX_KVM_H */ | 1382#endif /* __LINUX_KVM_H */ |