| @@ -16,76 +16,6 @@ · 15 unmodified lines |
| 16 | | 16 | |
| 17 | #define KVM_API_VERSION 12 | 17 | #define KVM_API_VERSION 12 |
| 18 | | 18 | |
| 19 | /* *** Deprecated interfaces *** */ | | |
| 20 | | | |
| 21 | #define KVM_TRC_SHIFT 16 | | |
| 22 | | | |
| 23 | #define KVM_TRC_ENTRYEXIT (1 << KVM_TRC_SHIFT) | | |
| 24 | #define KVM_TRC_HANDLER (1 << (KVM_TRC_SHIFT + 1)) | | |
| 25 | | | |
| 26 | #define KVM_TRC_VMENTRY (KVM_TRC_ENTRYEXIT + 0x01) | | |
| 27 | #define KVM_TRC_VMEXIT (KVM_TRC_ENTRYEXIT + 0x02) | | |
| 28 | #define KVM_TRC_PAGE_FAULT (KVM_TRC_HANDLER + 0x01) | | |
| 29 | | | |
| 30 | #define KVM_TRC_HEAD_SIZE 12 | | |
| 31 | #define KVM_TRC_CYCLE_SIZE 8 | | |
| 32 | #define KVM_TRC_EXTRA_MAX 7 | | |
| 33 | | | |
| 34 | #define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) | | |
| 35 | #define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) | | |
| 36 | #define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) | | |
| 37 | #define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05) | | |
| 38 | #define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06) | | |
| 39 | #define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07) | | |
| 40 | #define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08) | | |
| 41 | #define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09) | | |
| 42 | #define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A) | | |
| 43 | #define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B) | | |
| 44 | #define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C) | | |
| 45 | #define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D) | | |
| 46 | #define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E) | | |
| 47 | #define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F) | | |
| 48 | #define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10) | | |
| 49 | #define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11) | | |
| 50 | #define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12) | | |
| 51 | #define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13) | | |
| 52 | #define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14) | | |
| 53 | #define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15) | | |
| 54 | #define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16) | | |
| 55 | #define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17) | | |
| 56 | #define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18) | | |
| 57 | #define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19) | | |
| 58 | | | |
| 59 | struct kvm_user_trace_setup { | | |
| 60 | __u32 buf_size; | | |
| 61 | __u32 buf_nr; | | |
| 62 | }; | | |
| 63 | | | |
| 64 | #define __KVM_DEPRECATED_MAIN_W_0x06 \ | | |
| 65 | _IOW(KVMIO, 0x06, struct kvm_user_trace_setup) | | |
| 66 | #define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07) | | |
| 67 | #define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08) | | |
| 68 | | | |
| 69 | #define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq) | | |
| 70 | | | |
| 71 | struct kvm_breakpoint { | | |
| 72 | __u32 enabled; | | |
| 73 | __u32 padding; | | |
| 74 | __u64 address; | | |
| 75 | }; | | |
| 76 | | | |
| 77 | struct kvm_debug_guest { | | |
| 78 | __u32 enabled; | | |
| 79 | __u32 pad; | | |
| 80 | struct kvm_breakpoint breakpoints[4]; | | |
| 81 | __u32 singlestep; | | |
| 82 | }; | | |
| 83 | | | |
| 84 | #define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest) | | |
| 85 | | | |
| 86 | /* *** End of deprecated interfaces *** */ | | |
| 87 | | | |
| 88 | | | |
| 89 | /* for KVM_SET_USER_MEMORY_REGION */ | 19 | /* for KVM_SET_USER_MEMORY_REGION */ |
| 90 | struct kvm_userspace_memory_region { | 20 | struct kvm_userspace_memory_region { |
| 91 | __u32 slot; | 21 | __u32 slot; |
| @@ -95,6 +25,19 @@ struct kvm_userspace_memory_region { · 3 unmodified lines |
| 95 | __u64 userspace_addr; /* start of the userspace allocated memory */ | 25 | __u64 userspace_addr; /* start of the userspace allocated memory */ |
| 96 | }; | 26 | }; |
| 97 | | 27 | |
| | 28 | /* for KVM_SET_USER_MEMORY_REGION2 */ |
| | 29 | struct kvm_userspace_memory_region2 { |
| | 30 | __u32 slot; |
| | 31 | __u32 flags; |
| | 32 | __u64 guest_phys_addr; |
| | 33 | __u64 memory_size; |
| | 34 | __u64 userspace_addr; |
| | 35 | __u64 guest_memfd_offset; |
| | 36 | __u32 guest_memfd; |
| | 37 | __u32 pad1; |
| | 38 | __u64 pad2[14]; |
| | 39 | }; |
| | 40 | |
| 98 | /* | 41 | /* |
| 99 | * The bit 0 ~ bit 15 of kvm_userspace_memory_region::flags are visible for | 42 | * The bit 0 ~ bit 15 of kvm_userspace_memory_region::flags are visible for |
| 100 | * userspace, other bits are reserved for kvm internal use which are defined | 43 | * userspace, other bits are reserved for kvm internal use which are defined |
| @@ -102,6 +45,7 @@ struct kvm_userspace_memory_region { · 1 unmodified line |
| 102 | */ | 45 | */ |
| 103 | #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0) | 46 | #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0) |
| 104 | #define KVM_MEM_READONLY (1UL << 1) | 47 | #define KVM_MEM_READONLY (1UL << 1) |
| | 48 | #define KVM_MEM_GUEST_MEMFD (1UL << 2) |
| 105 | | 49 | |
| 106 | /* for KVM_IRQ_LINE */ | 50 | /* for KVM_IRQ_LINE */ |
| 107 | struct kvm_irq_level { | 51 | struct kvm_irq_level { |
| @@ -265,6 +209,7 @@ struct kvm_xen_exit { · 157 unmodified lines |
| 265 | #define KVM_EXIT_RISCV_CSR 36 | 209 | #define KVM_EXIT_RISCV_CSR 36 |
| 266 | #define KVM_EXIT_NOTIFY 37 | 210 | #define KVM_EXIT_NOTIFY 37 |
| 267 | #define KVM_EXIT_LOONGARCH_IOCSR 38 | 211 | #define KVM_EXIT_LOONGARCH_IOCSR 38 |
| | 212 | #define KVM_EXIT_MEMORY_FAULT 39 |
| 268 | | 213 | |
| 269 | /* For KVM_EXIT_INTERNAL_ERROR */ | 214 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 270 | /* Emulate instruction failed. */ | 215 | /* Emulate instruction failed. */ |
| @@ -518,6 +463,13 @@ struct kvm_run { · 247 unmodified lines |
| 518 | #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0) | 463 | #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0) |
| 519 | __u32 flags; | 464 | __u32 flags; |
| 520 | } notify; | 465 | } notify; |
| | 466 | /* KVM_EXIT_MEMORY_FAULT */ |
| | 467 | struct { |
| | 468 | #define KVM_MEMORY_EXIT_FLAG_PRIVATE (1ULL << 3) |
| | 469 | __u64 flags; |
| | 470 | __u64 gpa; |
| | 471 | __u64 size; |
| | 472 | } memory_fault; |
| 521 | /* Fix the size of the union. */ | 473 | /* Fix the size of the union. */ |
| 522 | char padding[256]; | 474 | char padding[256]; |
| 523 | }; | 475 | }; |
| @@ -945,9 +897,6 @@ struct kvm_ppc_resize_hpt { · 421 unmodified lines |
| 945 | */ | 897 | */ |
| 946 | #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04) /* in bytes */ | 898 | #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04) /* in bytes */ |
| 947 | #define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2) | 899 | #define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2) |
| 948 | #define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06 | | |
| 949 | #define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07 | | |
| 950 | #define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08 | | |
| 951 | #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2) | 900 | #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2) |
| 952 | #define KVM_GET_MSR_FEATURE_INDEX_LIST _IOWR(KVMIO, 0x0a, struct kvm_msr_list) | 901 | #define KVM_GET_MSR_FEATURE_INDEX_LIST _IOWR(KVMIO, 0x0a, struct kvm_msr_list) |
| 953 | | 902 | |
| @@ -1201,6 +1150,11 @@ struct kvm_ppc_resize_hpt { · 247 unmodified lines |
| 1201 | #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228 | 1150 | #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228 |
| 1202 | #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229 | 1151 | #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229 |
| 1203 | #define KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES 230 | 1152 | #define KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES 230 |
| | 1153 | #define KVM_CAP_USER_MEMORY2 231 |
| | 1154 | #define KVM_CAP_MEMORY_FAULT_INFO 232 |
| | 1155 | #define KVM_CAP_MEMORY_ATTRIBUTES 233 |
| | 1156 | #define KVM_CAP_GUEST_MEMFD 234 |
| | 1157 | #define KVM_CAP_VM_TYPES 235 |
| 1204 | | 1158 | |
| 1205 | #ifdef KVM_CAP_IRQ_ROUTING | 1159 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1206 | | 1160 | |
| @@ -1291,6 +1245,7 @@ struct kvm_x86_mce { · 84 unmodified lines |
| 1291 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) | 1245 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) |
| 1292 | #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) | 1246 | #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) |
| 1293 | #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6) | 1247 | #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6) |
| | 1248 | #define KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE (1 << 7) |
| 1294 | | 1249 | |
| 1295 | struct kvm_xen_hvm_config { | 1250 | struct kvm_xen_hvm_config { |
| 1296 | __u32 flags; | 1251 | __u32 flags; |
| @@ -1483,6 +1438,8 @@ struct kvm_vfio_spapr_tce { · 186 unmodified lines |
| 1483 | struct kvm_userspace_memory_region) | 1438 | struct kvm_userspace_memory_region) |
| 1484 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) | 1439 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) |
| 1485 | #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) | 1440 | #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) |
| | 1441 | #define KVM_SET_USER_MEMORY_REGION2 _IOW(KVMIO, 0x49, \ |
| | 1442 | struct kvm_userspace_memory_region2) |
| 1486 | | 1443 | |
| 1487 | /* enable ucontrol for s390 */ | 1444 | /* enable ucontrol for s390 */ |
| 1488 | struct kvm_s390_ucas_mapping { | 1445 | struct kvm_s390_ucas_mapping { |
| @@ -1507,20 +1464,8 @@ struct kvm_s390_ucas_mapping { · 18 unmodified lines |
| 1507 | _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) | 1464 | _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) |
| 1508 | #define KVM_UNREGISTER_COALESCED_MMIO \ | 1465 | #define KVM_UNREGISTER_COALESCED_MMIO \ |
| 1509 | _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) | 1466 | _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) |
| 1510 | #define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \ | | |
| 1511 | struct kvm_assigned_pci_dev) | | |
| 1512 | #define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing) | 1467 | #define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing) |
| 1513 | /* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */ | | |
| 1514 | #define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70 | | |
| 1515 | #define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq) | | |
| 1516 | #define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71) | 1468 | #define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71) |
| 1517 | #define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \ | | |
| 1518 | struct kvm_assigned_pci_dev) | | |
| 1519 | #define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, \ | | |
| 1520 | struct kvm_assigned_msix_nr) | | |
| 1521 | #define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, \ | | |
| 1522 | struct kvm_assigned_msix_entry) | | |
| 1523 | #define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq) | | |
| 1524 | #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) | 1469 | #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) |
| 1525 | #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) | 1470 | #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) |
| 1526 | #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) | 1471 | #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) |
| @@ -1537,9 +1482,6 @@ struct kvm_s390_ucas_mapping { · 10 unmodified lines |
| 1537 | * KVM_CAP_VM_TSC_CONTROL to set defaults for a VM */ | 1482 | * KVM_CAP_VM_TSC_CONTROL to set defaults for a VM */ |
| 1538 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) | 1483 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) |
| 1539 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) | 1484 | #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) |
| 1540 | /* Available with KVM_CAP_PCI_2_3 */ | | |
| 1541 | #define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, \ | | |
| 1542 | struct kvm_assigned_pci_dev) | | |
| 1543 | /* Available with KVM_CAP_SIGNAL_MSI */ | 1485 | /* Available with KVM_CAP_SIGNAL_MSI */ |
| 1544 | #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) | 1486 | #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) |
| 1545 | /* Available with KVM_CAP_PPC_GET_SMMU_INFO */ | 1487 | /* Available with KVM_CAP_PPC_GET_SMMU_INFO */ |
| @@ -1592,8 +1534,6 @@ struct kvm_s390_ucas_mapping { · 46 unmodified lines |
| 1592 | #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs) | 1534 | #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs) |
| 1593 | #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation) | 1535 | #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation) |
| 1594 | #define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt) | 1536 | #define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt) |
| 1595 | /* KVM_DEBUG_GUEST is no longer supported, use KVM_SET_GUEST_DEBUG instead */ | | |
| 1596 | #define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87 | | |
| 1597 | #define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs) | 1537 | #define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs) |
| 1598 | #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs) | 1538 | #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs) |
| 1599 | #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid) | 1539 | #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid) |
| @@ -2267,4 +2207,24 @@ struct kvm_s390_zpci_op { · 667 unmodified lines |
| 2267 | /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ | 2207 | /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ |
| 2268 | #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) | 2208 | #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) |
| 2269 | | 2209 | |
| | 2210 | /* Available with KVM_CAP_MEMORY_ATTRIBUTES */ |
| | 2211 | #define KVM_SET_MEMORY_ATTRIBUTES _IOW(KVMIO, 0xd2, struct kvm_memory_attributes) |
| | 2212 | |
| | 2213 | struct kvm_memory_attributes { |
| | 2214 | __u64 address; |
| | 2215 | __u64 size; |
| | 2216 | __u64 attributes; |
| | 2217 | __u64 flags; |
| | 2218 | }; |
| | 2219 | |
| | 2220 | #define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3) |
| | 2221 | |
| | 2222 | #define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd) |
| | 2223 | |
| | 2224 | struct kvm_create_guest_memfd { |
| | 2225 | __u64 size; |
| | 2226 | __u64 flags; |
| | 2227 | __u64 reserved[6]; |
| | 2228 | }; |
| | 2229 | |
| 2270 | #endif /* __LINUX_KVM_H */ | 2230 | #endif /* __LINUX_KVM_H */ |