| @@ -16,76 +16,6 @@ · 15 unmodified lines |
| 16 | 16 | |
| 17 | 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 | 19 | /* for KVM_SET_USER_MEMORY_REGION */ |
| 90 | 20 | struct kvm_userspace_memory_region { |
| 91 | 21 | __u32 slot; |
| @@ -95,6 +25,19 @@ struct kvm_userspace_memory_region { · 3 unmodified lines |
| 95 | 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 | 42 | * The bit 0 ~ bit 15 of kvm_userspace_memory_region::flags are visible for |
| 100 | 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 | 46 | #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0) |
| 104 | 47 | #define KVM_MEM_READONLY (1UL << 1) |
| 48 | +#define KVM_MEM_GUEST_MEMFD (1UL << 2) |
| 105 | 49 | |
| 106 | 50 | /* for KVM_IRQ_LINE */ |
| 107 | 51 | struct kvm_irq_level { |
| @@ -265,6 +209,7 @@ struct kvm_xen_exit { · 157 unmodified lines |
| 265 | 209 | #define KVM_EXIT_RISCV_CSR 36 |
| 266 | 210 | #define KVM_EXIT_NOTIFY 37 |
| 267 | 211 | #define KVM_EXIT_LOONGARCH_IOCSR 38 |
| 212 | +#define KVM_EXIT_MEMORY_FAULT 39 |
| 268 | 213 | |
| 269 | 214 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 270 | 215 | /* Emulate instruction failed. */ |
| @@ -518,6 +463,13 @@ struct kvm_run { · 247 unmodified lines |
| 518 | 463 | #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0) |
| 519 | 464 | __u32 flags; |
| 520 | 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 | 473 | /* Fix the size of the union. */ |
| 522 | 474 | char padding[256]; |
| 523 | 475 | }; |
| @@ -945,9 +897,6 @@ struct kvm_ppc_resize_hpt { · 421 unmodified lines |
| 945 | 897 | */ |
| 946 | 898 | #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04) /* in bytes */ |
| 947 | 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 | 900 | #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2) |
| 952 | 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 | 1150 | #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228 |
| 1202 | 1151 | #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229 |
| 1203 | 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 | 1159 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1206 | 1160 | |
| @@ -1291,6 +1245,7 @@ struct kvm_x86_mce { · 84 unmodified lines |
| 1291 | 1245 | #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) |
| 1292 | 1246 | #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) |
| 1293 | 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 | 1250 | struct kvm_xen_hvm_config { |
| 1296 | 1251 | __u32 flags; |
| @@ -1483,6 +1438,8 @@ struct kvm_vfio_spapr_tce { · 186 unmodified lines |
| 1483 | 1438 | struct kvm_userspace_memory_region) |
| 1484 | 1439 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) |
| 1485 | 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 | 1444 | /* enable ucontrol for s390 */ |
| 1488 | 1445 | struct kvm_s390_ucas_mapping { |
| @@ -1507,20 +1464,8 @@ struct kvm_s390_ucas_mapping { · 18 unmodified lines |
| 1507 | 1464 | _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) |
| 1508 | 1465 | #define KVM_UNREGISTER_COALESCED_MMIO \ |
| 1509 | 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 | 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 | 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 | 1469 | #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) |
| 1525 | 1470 | #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) |
| 1526 | 1471 | #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) |
| @@ -1537,9 +1482,6 @@ struct kvm_s390_ucas_mapping { · 10 unmodified lines |
| 1537 | 1482 | * KVM_CAP_VM_TSC_CONTROL to set defaults for a VM */ |
| 1538 | 1483 | #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) |
| 1539 | 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 | 1485 | /* Available with KVM_CAP_SIGNAL_MSI */ |
| 1544 | 1486 | #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) |
| 1545 | 1487 | /* Available with KVM_CAP_PPC_GET_SMMU_INFO */ |
| @@ -1592,8 +1534,6 @@ struct kvm_s390_ucas_mapping { · 46 unmodified lines |
| 1592 | 1534 | #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs) |
| 1593 | 1535 | #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation) |
| 1594 | 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 | 1537 | #define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs) |
| 1598 | 1538 | #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs) |
| 1599 | 1539 | #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid) |
| @@ -2267,4 +2207,24 @@ struct kvm_s390_zpci_op { · 667 unmodified lines |
| 2267 | 2207 | /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ |
| 2268 | 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 | 2230 | #endif /* __LINUX_KVM_H */ |