github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/sys/linux/dev_kvm.txt (about)

     1  # Copyright 2015 syzkaller project authors. All rights reserved.
     2  # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  meta arches["386", "amd64", "arm64", "mips64le", "ppc64le", "s390x"]
     5  
     6  include <linux/kvm.h>
     7  include <linux/kvm_host.h>
     8  include <uapi/linux/fcntl.h>
     9  include <asm/mce.h>
    10  
    11  resource fd_kvm[fd]
    12  resource fd_kvmvm[fd]
    13  resource fd_kvmcpu[fd]
    14  resource fd_kvmdev[fd]
    15  resource fd_kvm_guest_memfd[fd]
    16  resource vcpu_mmap_size[int64]
    17  
    18  openat$kvm(fd const[AT_FDCWD], file ptr[in, string["/dev/kvm"]], flags flags[open_flags], mode const[0]) fd_kvm
    19  
    20  # On x86, KVM_CREATE_VM accepts types 0 to 3.
    21  # On ARM64 it is either 0 (default size of 40 bits) or the guest address space size in bits, from 32 to the platform limit.
    22  ioctl$KVM_CREATE_VM(fd fd_kvm, cmd const[KVM_CREATE_VM], type intptr[0:64]) fd_kvmvm
    23  ioctl$KVM_CHECK_EXTENSION(fd fd_kvm, cmd const[KVM_CHECK_EXTENSION], arg intptr)
    24  ioctl$KVM_CHECK_EXTENSION_VM(fd fd_kvmvm, cmd const[KVM_CHECK_EXTENSION], arg intptr)
    25  ioctl$KVM_GET_VCPU_MMAP_SIZE(fd fd_kvm, cmd const[KVM_GET_VCPU_MMAP_SIZE]) vcpu_mmap_size
    26  
    27  ioctl$KVM_GET_API_VERSION(fd fd_kvm, cmd const[KVM_GET_API_VERSION], type const[0])
    28  ioctl$KVM_CREATE_VCPU(fd fd_kvmvm, cmd const[KVM_CREATE_VCPU], id intptr[0:2]) fd_kvmcpu
    29  ioctl$KVM_GET_DIRTY_LOG(fd fd_kvmvm, cmd const[KVM_GET_DIRTY_LOG], arg ptr[inout, kvm_dirty_log])
    30  ioctl$KVM_CLEAR_DIRTY_LOG(fd fd_kvmvm, cmd const[KVM_CLEAR_DIRTY_LOG], arg ptr[in, kvm_clear_dirty_log])
    31  ioctl$KVM_RESET_DIRTY_RINGS(fd fd_kvmvm, cmd const[KVM_RESET_DIRTY_RINGS])
    32  ioctl$KVM_CREATE_IRQCHIP(fd fd_kvmvm, cmd const[KVM_CREATE_IRQCHIP])
    33  ioctl$KVM_IRQ_LINE(fd fd_kvmvm, cmd const[KVM_IRQ_LINE], arg ptr[in, kvm_irq_level])
    34  ioctl$KVM_IRQ_LINE_STATUS(fd fd_kvmvm, cmd const[KVM_IRQ_LINE_STATUS], arg ptr[inout, kvm_irq_level])
    35  ioctl$KVM_SET_USER_MEMORY_REGION(fd fd_kvmvm, cmd const[KVM_SET_USER_MEMORY_REGION], arg ptr[in, kvm_userspace_memory_region])
    36  ioctl$KVM_SET_USER_MEMORY_REGION2(fd fd_kvmvm, cmd const[KVM_SET_USER_MEMORY_REGION2], arg ptr[in, kvm_userspace_memory_region2])
    37  ioctl$KVM_PPC_GET_PVINFO(fd fd_kvmvm, cmd const[KVM_PPC_GET_PVINFO], arg buffer[out])
    38  ioctl$KVM_SET_GSI_ROUTING(fd fd_kvmvm, cmd const[KVM_SET_GSI_ROUTING], arg ptr[in, kvm_irq_routing]) (no_squash)
    39  ioctl$KVM_ASSIGN_SET_MSIX_NR(fd fd_kvmvm, cmd const[KVM_ASSIGN_SET_MSIX_NR], arg ptr[in, kvm_assigned_msix_nr])
    40  ioctl$KVM_ASSIGN_SET_MSIX_ENTRY(fd fd_kvmvm, cmd const[KVM_ASSIGN_SET_MSIX_ENTRY], arg ptr[in, kvm_assigned_msix_entry])
    41  ioctl$KVM_IOEVENTFD(fd fd_kvmvm, cmd const[KVM_IOEVENTFD], arg ptr[in, kvm_ioeventfd])
    42  ioctl$KVM_SIGNAL_MSI(fd fd_kvmvm, cmd const[KVM_SIGNAL_MSI], arg ptr[in, kvm_msi])
    43  ioctl$KVM_PPC_GET_SMMU_INFO(fd fd_kvmvm, cmd const[KVM_PPC_GET_SMMU_INFO], arg buffer[out])
    44  ioctl$KVM_IRQFD(fd fd_kvmvm, cmd const[KVM_IRQFD], arg ptr[in, kvm_irqfd])
    45  ioctl$KVM_PPC_ALLOCATE_HTAB(fd fd_kvmvm, cmd const[KVM_PPC_ALLOCATE_HTAB], arg ptr[in, int32])
    46  ioctl$KVM_CREATE_DEVICE(fd fd_kvmvm, cmd const[KVM_CREATE_DEVICE], arg ptr[inout, kvm_create_device])
    47  ioctl$KVM_REGISTER_COALESCED_MMIO(fd fd_kvmvm, cmd const[KVM_REGISTER_COALESCED_MMIO], arg ptr[in, kvm_coalesced_mmio_zone])
    48  ioctl$KVM_UNREGISTER_COALESCED_MMIO(fd fd_kvmvm, cmd const[KVM_UNREGISTER_COALESCED_MMIO], arg ptr[in, kvm_coalesced_mmio_zone])
    49  ioctl$KVM_GET_STATS_FD_vm(fd fd_kvmvm, cmd const[KVM_GET_STATS_FD]) fd
    50  ioctl$KVM_GET_STATS_FD_cpu(fd fd_kvmcpu, cmd const[KVM_GET_STATS_FD]) fd
    51  
    52  ioctl$KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap[KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2, flags[kvm_dirty_log_protect, int64]]])
    53  ioctl$KVM_CAP_HALT_POLL(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap[KVM_CAP_HALT_POLL, int64]])
    54  ioctl$KVM_CAP_DIRTY_LOG_RING(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap[KVM_CAP_DIRTY_LOG_RING, flags[kvm_dirty_log_sizes, int64]]])
    55  ioctl$KVM_CAP_DIRTY_LOG_RING_ACQ_REL(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap[KVM_CAP_DIRTY_LOG_RING_ACQ_REL, flags[kvm_dirty_log_sizes, int64]]])
    56  
    57  # TODO: need more precise handling for arguments below
    58  ioctl$KVM_CAP_PTP_KVM(fd fd_kvmvm, cmd const[KVM_ENABLE_CAP], arg ptr[in, kvm_enable_cap[KVM_CAP_PTP_KVM, void]])
    59  
    60  ioctl$KVM_RUN(fd fd_kvmcpu, cmd const[KVM_RUN], arg const[0])
    61  ioctl$KVM_GET_REGS(fd fd_kvmcpu, cmd const[KVM_GET_REGS], arg ptr[out, kvm_regs])
    62  ioctl$KVM_SET_REGS(fd fd_kvmcpu, cmd const[KVM_SET_REGS], arg ptr[in, kvm_regs])
    63  ioctl$KVM_GET_SREGS(fd fd_kvmcpu, cmd const[KVM_GET_SREGS], arg ptr[out, kvm_sregs])
    64  ioctl$KVM_SET_SREGS(fd fd_kvmcpu, cmd const[KVM_SET_SREGS], arg ptr[in, kvm_sregs])
    65  ioctl$KVM_INTERRUPT(fd fd_kvmcpu, cmd const[KVM_INTERRUPT], arg ptr[in, int32])
    66  ioctl$KVM_SET_SIGNAL_MASK(fd fd_kvmcpu, cmd const[KVM_SET_SIGNAL_MASK], arg ptr[in, kvm_signal_mask]) (no_squash)
    67  ioctl$KVM_GET_VCPU_EVENTS(fd fd_kvmcpu, cmd const[KVM_GET_VCPU_EVENTS], arg ptr[out, kvm_vcpu_events])
    68  ioctl$KVM_SET_VCPU_EVENTS(fd fd_kvmcpu, cmd const[KVM_SET_VCPU_EVENTS], arg ptr[in, kvm_vcpu_events])
    69  ioctl$KVM_GET_MP_STATE(fd fd_kvmcpu, cmd const[KVM_GET_MP_STATE], arg ptr[out, int32])
    70  ioctl$KVM_SET_MP_STATE(fd fd_kvmcpu, cmd const[KVM_SET_MP_STATE], arg ptr[in, flags[kvm_mp_state, int32]])
    71  ioctl$KVM_DIRTY_TLB(fd fd_kvmcpu, cmd const[KVM_DIRTY_TLB], arg ptr[in, kvm_dirty_tlb])
    72  # NEED: arch constraints for syscalls. These are s390-specific, but consts are present on all arches, so they are not disabled on other arches.
    73  ioctl$KVM_S390_UCAS_MAP(fd fd_kvmcpu, cmd const[KVM_S390_UCAS_MAP], arg ptr[in, kvm_s390_ucas_mapping])
    74  ioctl$KVM_S390_UCAS_UNMAP(fd fd_kvmcpu, cmd const[KVM_S390_UCAS_UNMAP], arg ptr[in, kvm_s390_ucas_mapping])
    75  ioctl$KVM_S390_VCPU_FAULT(fd fd_kvmcpu, cmd const[KVM_S390_VCPU_FAULT], arg ptr[in, int64])
    76  ioctl$KVM_SET_ONE_REG(fd fd_kvmcpu, cmd const[KVM_SET_ONE_REG], arg ptr[in, kvm_one_reg])
    77  ioctl$KVM_GET_ONE_REG(fd fd_kvmcpu, cmd const[KVM_GET_ONE_REG], arg ptr[in, kvm_one_reg])
    78  ioctl$KVM_KVMCLOCK_CTRL(fd fd_kvmcpu, cmd const[KVM_KVMCLOCK_CTRL])
    79  ioctl$KVM_S390_INTERRUPT_CPU(fd fd_kvmcpu, cmd const[KVM_S390_INTERRUPT], arg ptr[in, kvm_s390_interrupt])
    80  ioctl$KVM_GET_REG_LIST(fd fd_kvmcpu, cmd const[KVM_GET_REG_LIST], arg ptr[inout, kvm_reg_list])
    81  ioctl$KVM_SET_DEVICE_ATTR(fd fd_kvmdev, cmd const[KVM_SET_DEVICE_ATTR], arg ptr[in, kvm_device_attr])
    82  ioctl$KVM_GET_DEVICE_ATTR(fd fd_kvmdev, cmd const[KVM_GET_DEVICE_ATTR], arg ptr[in, kvm_device_attr])
    83  ioctl$KVM_HAS_DEVICE_ATTR(fd fd_kvmdev, cmd const[KVM_HAS_DEVICE_ATTR], arg ptr[in, kvm_device_attr])
    84  
    85  # From https://docs.kernel.org/virt/kvm/devices/vcpu.html:
    86  # The virtual cpu “device” also accepts the ioctls KVM_SET_DEVICE_ATTR, KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR.
    87  # The interface uses the same struct kvm_device_attr as other devices, but targets VCPU-wide settings and controls.
    88  ioctl$KVM_SET_DEVICE_ATTR_vcpu(fd fd_kvmcpu, cmd const[KVM_SET_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vcpu])
    89  ioctl$KVM_GET_DEVICE_ATTR_vcpu(fd fd_kvmcpu, cmd const[KVM_GET_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vcpu])
    90  ioctl$KVM_HAS_DEVICE_ATTR_vcpu(fd fd_kvmcpu, cmd const[KVM_HAS_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vcpu])
    91  
    92  # From https://docs.kernel.org/virt/kvm/devices/vm.html:
    93  # The virtual machine “device” also accepts the ioctls KVM_SET_DEVICE_ATTR, KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR.
    94  # The interface uses the same struct kvm_device_attr as other devices, but targets VM-wide settings and controls.
    95  ioctl$KVM_SET_DEVICE_ATTR_vm(fd fd_kvmvm, cmd const[KVM_SET_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vm])
    96  ioctl$KVM_GET_DEVICE_ATTR_vm(fd fd_kvmvm, cmd const[KVM_GET_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vm])
    97  ioctl$KVM_HAS_DEVICE_ATTR_vm(fd fd_kvmvm, cmd const[KVM_HAS_DEVICE_ATTR], arg ptr[in, kvm_device_attr_vm])
    98  
    99  ioctl$KVM_CREATE_GUEST_MEMFD(fd fd_kvmvm, cmd const[KVM_CREATE_GUEST_MEMFD], arg ptr[in, kvm_create_guest_memfd]) fd_kvm_guest_memfd
   100  ioctl$KVM_PRE_FAULT_MEMORY(fd fd_kvmcpu, cmd const[KVM_PRE_FAULT_MEMORY], arg ptr[inout, kvm_pre_fault_memory])
   101  
   102  kvm_mem_region_flags = KVM_MEM_LOG_DIRTY_PAGES, KVM_MEM_READONLY, KVM_MEM_GUEST_MEMFD
   103  kvm_mp_state = KVM_MP_STATE_RUNNABLE, KVM_MP_STATE_UNINITIALIZED, KVM_MP_STATE_INIT_RECEIVED, KVM_MP_STATE_HALTED, KVM_MP_STATE_SIPI_RECEIVED, KVM_MP_STATE_STOPPED, KVM_MP_STATE_CHECK_STOP, KVM_MP_STATE_OPERATING, KVM_MP_STATE_LOAD
   104  kvm_irq_routing_entry_type = KVM_IRQ_ROUTING_IRQCHIP, KVM_IRQ_ROUTING_MSI, KVM_IRQ_ROUTING_S390_ADAPTER, KVM_IRQ_ROUTING_HV_SINT, KVM_IRQ_ROUTING_XEN_EVTCHN
   105  kvm_ioeventfd_flags = KVM_IOEVENTFD_FLAG_DATAMATCH, KVM_IOEVENTFD_FLAG_PIO, KVM_IOEVENTFD_FLAG_DEASSIGN, KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY
   106  kvm_ioeventfd_len = 0, 1, 2, 4, 8
   107  kvm_device_type = KVM_DEV_TYPE_FSL_MPIC_20, KVM_DEV_TYPE_FSL_MPIC_42, KVM_DEV_TYPE_XICS, KVM_DEV_TYPE_VFIO, KVM_DEV_TYPE_ARM_VGIC_V2, KVM_DEV_TYPE_FLIC, KVM_DEV_TYPE_ARM_VGIC_V3, KVM_DEV_TYPE_ARM_VGIC_ITS, KVM_DEV_TYPE_XIVE, KVM_DEV_TYPE_ARM_PV_TIME, KVM_DEV_TYPE_RISCV_AIA
   108  kvm_device_flags = 0, KVM_CREATE_DEVICE_TEST
   109  kvm_guest_debug_flags = KVM_GUESTDBG_ENABLE, KVM_GUESTDBG_SINGLESTEP, KVM_GUESTDBG_USE_SW_BP, KVM_GUESTDBG_USE_HW_BP, KVM_GUESTDBG_USE_HW, KVM_GUESTDBG_INJECT_DB, KVM_GUESTDBG_INJECT_BP, KVM_GUESTDBG_EXIT_PENDING, KVM_GUESTDBG_BLOCKIRQ
   110  kvm_guest_selector = 0, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16
   111  kvm_dirty_log_protect = KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE, KVM_DIRTY_LOG_INITIALLY_SET
   112  kvm_dirty_log_sizes = 4096, 8192, 16384, 32768, 65536
   113  kvm_mem_slots = 0, 1, 2, 3, 4, 5, 509, 510, 511, 10000, 65536, 65537, 65538, 65539, 65540, 66047, 66048, 66049
   114  kvm_guest_addr_size = 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x100000
   115  kvm_x86_cr0 = 1, 2, 4, 8, 16, 32, 65536, 262144, 536870912, 1073741824, 2147483648
   116  kvm_x86_cr4 = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 8192, 16384, 65536, 131072, 262144, 1048576, 2097152, 4194304
   117  kvm_x86_efer = 1, 256, 1024, 2048, 4096, 8192, 16384, 32768
   118  kvm_x86_rflags = 1, 2, 4, 16, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152
   119  
   120  # Pseudo call that setups VCPU into a reasonable interesting state for execution.
   121  # The interface is designed for extensibility so that addition of new options does not invalidate all existing programs.
   122  syz_kvm_setup_cpu$ppc64(fd fd_kvmvm, cpufd fd_kvmcpu, usermem vma[24], text ptr[in, array[kvm_text_ppc64, 1]], ntext len[text], flags flags[kvm_setup_flags_ppc64], opts ptr[in, array[kvm_setup_opt_ppc64, 1]], nopt len[opts])
   123  
   124  resource kvm_run_ptr[int64]
   125  define KVM_RUN_SIZE	sizeof(struct kvm_run)
   126  mmap$KVM_VCPU(addr vma, len vcpu_mmap_size, prot flags[mmap_prot], flags flags[mmap_flags], cpufd fd_kvmcpu, offset const[0]) kvm_run_ptr
   127  _ = __NR_mmap2
   128  
   129  define KVM_EXIT_MMIO_OFFSET	offsetof(struct kvm_run, mmio)
   130  define KVM_EXIT_MMIO_SIZE	sizeof_field(struct kvm_run, mmio)
   131  syz_memcpy_off$KVM_EXIT_MMIO(dst kvm_run_ptr, off const[KVM_EXIT_MMIO_OFFSET], src ptr[in, array[int8, KVM_EXIT_MMIO_SIZE]], src_off const[0], nbytes len[src])
   132  
   133  define KVM_EXIT_HYPERCALL_OFFSET	offsetof(struct kvm_run, hypercall)
   134  define KVM_EXIT_HYPERCALL_SIZE	sizeof_field(struct kvm_run, hypercall)
   135  syz_memcpy_off$KVM_EXIT_HYPERCALL(dst kvm_run_ptr, off const[KVM_EXIT_HYPERCALL_OFFSET], src ptr[in, array[int8, KVM_EXIT_HYPERCALL_SIZE]], src_off const[0], nbytes len[src])
   136  
   137  kvm_text_ppc64 {
   138  	typ	const[0, intptr]
   139  	text	ptr[in, text[ppc64]]
   140  	size	len[text, intptr]
   141  }
   142  
   143  kvm_setup_opt_ppc64 [
   144  # unions need at least 2 fields, but we have only 1 now, but we want to have it as union for future extention
   145  	featur1	kvm_setup_opt_ppc64_feature
   146  	featur2	kvm_setup_opt_ppc64_feature
   147  ]
   148  
   149  kvm_setup_opt_ppc64_feature {
   150  	typ	const[1, int64]
   151  	val	int64
   152  }
   153  
   154  kvm_setup_flags_ppc64 = KVM_SETUP_PPC64_LE, KVM_SETUP_PPC64_IR, KVM_SETUP_PPC64_DR, KVM_SETUP_PPC64_PR, KVM_SETUP_PPC64_PID1
   155  
   156  # Little endian
   157  define KVM_SETUP_PPC64_LE	(1<<0)
   158  # Paging for instructions
   159  define KVM_SETUP_PPC64_IR	(1<<1)
   160  # Paging for data
   161  define KVM_SETUP_PPC64_DR	(1<<2)
   162  # Run with MSR_PR (==usermode)
   163  define KVM_SETUP_PPC64_PR	(1<<3)
   164  # Set PID=1 i.e. not kernel's PID
   165  define KVM_SETUP_PPC64_PID1	(1<<4)
   166  
   167  type kvm_guest_debug[ARCH] {
   168  	ctrl	flags[kvm_guest_debug_flags, int32]
   169  	pad	const[0, int32]
   170  	arch	ARCH
   171  }
   172  
   173  kvm_reg_list {
   174  	n	len[reg, int64]
   175  	reg	array[int64]
   176  }
   177  
   178  kvm_device_attr [
   179  	attr_arm64	kvm_device_attr_arm64
   180  	attr_other	kvm_device_attr_generic
   181  ]
   182  
   183  kvm_device_attr_generic {
   184  	flags	const[0, int32]
   185  	group	int32
   186  	attr	int64
   187  	addr	ptr64[inout, int64]
   188  }
   189  
   190  kvm_device_attr_arm64 {
   191  	flags	const[0, int32]
   192  	group	flags[kvm_device_attr_arm64_groups, int32]
   193  	attr	flags[kvm_device_attr_arm64_attrs, int64]
   194  	addr	ptr64[inout, int64]
   195  }
   196  
   197  # Assorted device attributes from
   198  # - https://docs.kernel.org/virt/kvm/devices/arm-vgic-its.html,
   199  # - https://docs.kernel.org/virt/kvm/devices/arm-vgic.html,
   200  # - https://docs.kernel.org/virt/kvm/devices/arm-vgic-v3.html
   201  kvm_device_attr_arm64_groups = KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_DEV_ARM_VGIC_GRP_DIST_REGS, KVM_DEV_ARM_VGIC_GRP_CPU_REGS, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_GRP_REDIST_REGS, KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, KVM_DEV_ARM_VGIC_GRP_ITS_REGS
   202  kvm_device_attr_arm64_attrs = 0, KVM_VGIC_ITS_ADDR_TYPE, KVM_VGIC_V2_ADDR_TYPE_DIST, KVM_VGIC_V2_ADDR_TYPE_CPU, KVM_VGIC_V3_ADDR_TYPE_DIST, KVM_VGIC_V3_ADDR_TYPE_REDIST, KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, KVM_DEV_ARM_VGIC_CTRL_INIT, KVM_DEV_ARM_ITS_CTRL_RESET, KVM_DEV_ARM_ITS_SAVE_TABLES, KVM_DEV_ARM_ITS_RESTORE_TABLES, KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES
   203  
   204  kvm_device_attr_vm [
   205  	attr_arm64	kvm_device_attr_vm_arm64
   206  	attr_other	kvm_device_attr_generic
   207  ]
   208  
   209  kvm_device_attr_vcpu [
   210  	attr_pmu_irq	kvm_vcpu_attr_pmu_irq
   211  	attr_pmu_init	kvm_vcpu_attr_pmu_init
   212  	attr_pmu_filter	kvm_vcpu_attr_pmu_filter
   213  	attr_set_pmu	kvm_vcpu_attr_set_pmu
   214  	attr_irq_timer	kvm_vcpu_attr_irq_timer
   215  	attr_pvtime_ipa	kvm_vcpu_attr_pvtime_ipa
   216  	attr_other	kvm_device_attr_generic
   217  ]
   218  
   219  kvm_vm_attr_group_arm64 = KVM_ARM_VM_SMCCC_CTRL
   220  kvm_vm_attr_attr_arm64 = KVM_ARM_VM_SMCCC_FILTER
   221  
   222  # TODO(glider): as of now the only supported argument is kvm_smccc_filter.
   223  # Need to make addr point to a union when this changes.
   224  kvm_device_attr_vm_arm64 {
   225  	flags	const[0, int32]
   226  	group	flags[kvm_vm_attr_group_arm64, int32]
   227  	attr	flags[kvm_vm_attr_attr_arm64, int64]
   228  	addr	ptr64[in, kvm_smccc_filter]
   229  }
   230  
   231  kvm_vcpu_attr_pmu_irq {
   232  	flags	const[0, int32]
   233  	group	const[KVM_ARM_VCPU_PMU_V3_CTRL, int32]
   234  	attr	const[KVM_ARM_VCPU_PMU_V3_IRQ, int64]
   235  	addr	ptr64[in, int32]
   236  }
   237  
   238  kvm_vcpu_attr_pmu_init {
   239  	flags	const[0, int32]
   240  	group	const[KVM_ARM_VCPU_PMU_V3_CTRL, int32]
   241  	attr	const[KVM_ARM_VCPU_PMU_V3_INIT, int64]
   242  	addr	const[0, int64]
   243  }
   244  
   245  kvm_vcpu_attr_pmu_filter {
   246  	flags	const[0, int32]
   247  	group	const[KVM_ARM_VCPU_PMU_V3_CTRL, int32]
   248  	attr	const[KVM_ARM_VCPU_PMU_V3_FILTER, int64]
   249  	addr	ptr64[in, kvm_pmu_event_filter]
   250  }
   251  
   252  kvm_vcpu_attr_set_pmu {
   253  	flags	const[0, int32]
   254  	group	const[KVM_ARM_VCPU_PMU_V3_CTRL, int32]
   255  	attr	const[KVM_ARM_VCPU_PMU_V3_SET_PMU, int64]
   256  	addr	ptr64[in, int32]
   257  }
   258  
   259  kvm_vcpu_timer_attributes = KVM_ARM_VCPU_TIMER_IRQ_VTIMER, KVM_ARM_VCPU_TIMER_IRQ_PTIMER
   260  
   261  kvm_vcpu_attr_irq_timer {
   262  	flags	const[0, int32]
   263  	group	const[KVM_ARM_VCPU_TIMER_CTRL, int32]
   264  	attr	flags[kvm_vcpu_timer_attributes, int64]
   265  	addr	ptr64[in, int32[16:31]]
   266  }
   267  
   268  kvm_vcpu_attr_pvtime_ipa {
   269  	flags	const[0, int32]
   270  	group	const[KVM_ARM_VCPU_PVTIME_CTRL, int32]
   271  	attr	const[KVM_ARM_VCPU_PVTIME_IPA, int64]
   272  	addr	int64
   273  }
   274  
   275  kvm_pmu_event_filter = KVM_PMU_EVENT_ALLOW, KVM_PMU_EVENT_DENY
   276  
   277  kvm_pmu_event_filter {
   278  	base_event	int16
   279  	nevents		int16
   280  	action		flags[kvm_pmu_event_filter, int8]
   281  	pad		array[const[0, int8], 3]
   282  }
   283  
   284  kvm_smccc_filter_action = KVM_SMCCC_FILTER_HANDLE, KVM_SMCCC_FILTER_DENY, KVM_SMCCC_FILTER_FWD_TO_USER
   285  
   286  kvm_smccc_filter {
   287  	base		int32
   288  	nr_functions	int32
   289  	action		flags[kvm_smccc_filter_action, int8]
   290  	pad		array[const[0, int8], 15]
   291  }
   292  
   293  kvm_create_guest_memfd {
   294  	size		int64
   295  	flags		int64
   296  	reserved	array[const[0, int64], 6]
   297  }
   298  
   299  kvm_pre_fault_memory {
   300  	gpa	flags[kvm_guest_addrs, int64]
   301  	size	flags[kvm_guest_addr_size, int64]
   302  	flags	const[0, int64]
   303  	pad	array[const[0, int64], 5]
   304  }
   305  
   306  kvm_create_device {
   307  	type	flags[kvm_device_type, int32]	(in)
   308  	fd	fd_kvmdev	(out)
   309  	flags	flags[kvm_device_flags, int32]	(in)
   310  }
   311  
   312  kvm_s390_interrupt {
   313  	type	int32
   314  	parm	int32
   315  	parm64	int64
   316  }
   317  
   318  kvm_irqfd_flags = KVM_IRQFD_FLAG_DEASSIGN, KVM_IRQFD_FLAG_RESAMPLE
   319  
   320  kvm_irqfd {
   321  	fd	fd_event
   322  	gsi	int32
   323  	flags	flags[kvm_irqfd_flags, int32]
   324  	rfd	fd_event
   325  	pad	array[const[0, int8], 16]
   326  }
   327  
   328  kvm_msi_flags = 0, KVM_MSI_VALID_DEVID
   329  
   330  kvm_msi {
   331  	addrlo	flags[kvm_guest_addrs, int32]
   332  	addrhi	flags[kvm_guest_addrs, int32]
   333  	data	int32
   334  	flags	flags[kvm_msi_flags, int32]
   335  	devid	int32
   336  	pad	array[const[0, int8], 12]
   337  }
   338  
   339  kvm_one_reg [
   340  # Constants from https://docs.kernel.org/virt/kvm/api.html
   341  	arm64_core	kvm_one_reg_arm64_srange[0x6030000000100000:0x6030000000100050, 2]
   342  	arm64_fp	kvm_one_reg_arm64_range[0x6040000000100054:0x60400000001000d0]
   343  	arm64_fp_extra	kvm_one_reg_arm64_range[0x60200000001000d4:0x60200000001000d5]
   344  # Got 0x602000000011000d from KVM_GET_REG_LIST on QEMU
   345  	arm64_ccsidr	kvm_one_reg_arm64_range[0x6020000000110000:0x602000000011000d]
   346  	arm64_sys	kvm_one_reg_arm64[kvm_regs_arm64_sys]
   347  	arm64_extra	kvm_one_reg_arm64[kvm_regs_arm64_extra]
   348  	arm64_bitmap	kvm_one_reg_arm64_range[0x6030000000160000:0x6030000000160002]
   349  	arm64_fw	kvm_one_reg_arm64_range[0x6030000000140000:0x6030000000140003]
   350  	arm64_sve	kvm_one_reg_arm64_range[0x6080000000150000:0x6080000000150620]
   351  	arm64_sve_vls	kvm_one_reg_arm64_range[0x606000000015ffff]
   352  	other		kvm_one_reg_other
   353  ]
   354  
   355  type kvm_one_reg_arm64[FTYPE] {
   356  	id	flags[FTYPE, int64]
   357  	addr	ptr64[inout, int64]
   358  }
   359  
   360  type kvm_one_reg_arm64_range[RANGE] {
   361  	id	int64[RANGE]
   362  	addr	ptr64[inout, int64]
   363  }
   364  
   365  type kvm_one_reg_arm64_srange[RANGE, STEP] {
   366  	id	int64[RANGE, STEP]
   367  	addr	ptr64[inout, int64]
   368  }
   369  
   370  kvm_one_reg_other {
   371  	id	int64
   372  	addr	ptr64[inout, int64]
   373  }
   374  
   375  kvm_s390_ucas_mapping {
   376  	uaddr	int64
   377  	vaddr	int64
   378  	len	int64
   379  }
   380  
   381  kvm_dirty_tlb {
   382  	bitmap	int64
   383  	n	int32
   384  }
   385  
   386  kvm_ioeventfd {
   387  	datam	int64
   388  	addr	flags[kvm_guest_addrs, int64]
   389  	len	flags[kvm_ioeventfd_len, int32]
   390  	fd	fd_event
   391  	flags	flags[kvm_ioeventfd_flags, int32]
   392  	pad	array[const[0, int8], 36]
   393  }
   394  
   395  kvm_assigned_msix_entry {
   396  	devid	int32
   397  	gsi	int32
   398  	entry	int16
   399  	padding	array[const[0, int16], 3]
   400  }
   401  
   402  kvm_assigned_msix_nr {
   403  	devid	int32
   404  	entnr	int16
   405  }
   406  
   407  kvm_irq_routing {
   408  	nr	len[entries, int32]
   409  	flags	const[0, int32]
   410  	entries	array[kvm_irq_routing_entry]
   411  }
   412  
   413  kvm_irq_routing_entry {
   414  	gsi	int32
   415  	type	flags[kvm_irq_routing_entry_type, int32]
   416  	flags	flags[kvm_msi_flags, int32]
   417  	pad	const[0, int32]
   418  	u	kvm_irq_routing_entry_u
   419  }
   420  
   421  kvm_irq_routing_entry_u [
   422  	irqchip	kvm_irq_routing_irqchip
   423  	msi	kvm_irq_routing_msi
   424  	adapter	kvm_irq_routing_s390_adapter
   425  	sint	kvm_irq_routing_hv_sint
   426  ]
   427  
   428  kvm_irq_routing_irqchip {
   429  	irqchip	int32
   430  	pin	int32
   431  }
   432  
   433  kvm_irq_routing_msi {
   434  	address_lo	int32
   435  	address_hi	int32
   436  	data		int32
   437  	devid		int32
   438  }
   439  
   440  kvm_irq_routing_s390_adapter {
   441  	indaddr	int64
   442  	saddr	int64
   443  	indoff	int64
   444  	soff	int32
   445  	aid	int32
   446  }
   447  
   448  kvm_irq_routing_hv_sint {
   449  	vcpu	int32
   450  	sint	int32
   451  }
   452  
   453  type kvm_enable_cap[CAP, ARGS] {
   454  	cap	const[CAP, int32]
   455  	flags	const[0, int32]
   456  	args	ARGS
   457  } [align[8], size[KVM_ENABLE_CAP_SIZE]]
   458  
   459  define KVM_ENABLE_CAP_SIZE	sizeof(struct kvm_enable_cap)
   460  
   461  kvm_userspace_memory_region {
   462  	slot	flags[kvm_mem_slots, int32]
   463  	flags	flags[kvm_mem_region_flags, int32]
   464  	paddr	flags[kvm_guest_addrs, int64]
   465  	size	len[addr, int64]
   466  	addr	vma64[1:2]
   467  }
   468  
   469  kvm_userspace_memory_region2 {
   470  	slot			flags[kvm_mem_slots, int32]
   471  	flags			flags[kvm_mem_region_flags, int32]
   472  	paddr			flags[kvm_guest_addrs, int64]
   473  	size			len[addr, int64]
   474  	addr			vma64[1:2]
   475  	guest_memfd_offset	int64
   476  	guest_memfd		fd_kvm_guest_memfd
   477  	pad1			const[0, int32]
   478  	pad2			array[const[0, int64], 14]
   479  }
   480  
   481  # https://docs.kernel.org/virt/kvm/api.html#kvm-get-vcpu-events
   482  kvm_vcpu_events_x86 {
   483  	exinjec			int8
   484  	exnr			int8
   485  	exhec			int8
   486  	pad1			const[0, int8]
   487  	exec			int32
   488  
   489  	ininjec			int8
   490  	innr			int8
   491  	insoft			int8
   492  	inshad			int8
   493  
   494  	nmiinj			int8
   495  	nmipend			int8
   496  	nmimask			int8
   497  	pad2			const[0, int8]
   498  
   499  	sipi_vector		int32
   500  	flags			int32
   501  
   502  	smismm			int8
   503  	smipend			int8
   504  	smiinsi			int8
   505  	smilatc			int8
   506  
   507  	reserved		array[const[0, int8], 27]
   508  	exception_has_payload	int8
   509  	exception_payload	int64
   510  }
   511  
   512  kvm_vcpu_events_arm64 {
   513  	serror_pending		int8
   514  	serror_has_esr		int8
   515  	ext_dabt_pending	int8
   516  	pad			array[const[0, int8], 5]
   517  	serror_esr		int64
   518  	reserved		array[const[0, int32], 12]
   519  }
   520  
   521  kvm_vcpu_events [
   522  	x86	kvm_vcpu_events_x86
   523  	arm64	kvm_vcpu_events_arm64
   524  ]
   525  
   526  kvm_irq_level {
   527  	irq	int32
   528  	level	int32
   529  }
   530  
   531  kvm_signal_mask {
   532  	len	len[sigset, int32]
   533  	sigset	array[int8]
   534  }
   535  
   536  kvm_dirty_log {
   537  	slot	flags[kvm_mem_slots, int32]
   538  	pad	const[0, int32]
   539  	bitmap	vma64
   540  }
   541  
   542  # num_pages and first_page must be multiples of 64,
   543  # see https://docs.kernel.org/virt/kvm/api.html#kvm-clear-dirty-log-vm-ioctl
   544  kvm_clear_dirty_log {
   545  	slot		flags[kvm_mem_slots, int32]
   546  	num_pages	int32[0:1024, 64]
   547  	first_page	int32[0:1024, 64]
   548  # Allocate 1024 bits regardless of num_pages.
   549  	bitmap		ptr[in, array[int64, 128]]
   550  }
   551  
   552  kvm_regs {
   553  	gp	array[int64, 16]
   554  	rip	flags[kvm_guest_addrs, int64]
   555  	rflags	flags[kvm_x86_rflags, int64]
   556  }
   557  
   558  kvm_sregs {
   559  	cs	kvm_segment
   560  	ds	kvm_segment
   561  	es	kvm_segment
   562  	fs	kvm_segment
   563  	gs	kvm_segment
   564  	ss	kvm_segment
   565  	tr	kvm_segment
   566  	ldt	kvm_segment
   567  	gdt	kvm_dtable
   568  	idt	kvm_dtable
   569  	cr0	flags[kvm_x86_cr0, int64]
   570  	cr2	const[0, int64]
   571  # TODO: this should point to page table
   572  	cr3	flags[kvm_guest_addrs, int64]
   573  	cr4	flags[kvm_x86_cr4, int64]
   574  	cr8	int64[0:15]
   575  	efer	flags[kvm_x86_efer, int64]
   576  	apic	flags[kvm_guest_addrs, int64]
   577  	intr	array[int64, 4]
   578  }
   579  
   580  kvm_segment {
   581  	base	flags[kvm_guest_addrs, int64]
   582  	limit	flags[kvm_guest_addrs, int32]
   583  	select	flags[kvm_guest_selector, int16]
   584  	type	int8
   585  	present	int8
   586  	dpl	int8
   587  	db	int8
   588  	s	int8
   589  	l	int8
   590  	g	int8
   591  	avl	int8
   592  	unusabl	int8
   593  	padding	const[0, int8]
   594  }
   595  
   596  kvm_dtable {
   597  	base	flags[kvm_guest_addrs, int64]
   598  	limit	int16
   599  	pad	array[const[0, int16], 3]
   600  }
   601  
   602  kvm_coalesced_mmio_zone {
   603  	addr		flags[kvm_guest_addrs, int64]
   604  	size		flags[kvm_guest_addr_size, int32]
   605  	pio_or_pad	int32[0:1]
   606  }
   607  
   608  # pkg/ifuzz/pseudo.go also knows this list
   609  define VMCS12_SIZE	0x1000
   610  
   611  # Deprecated consts.
   612  # These were removed in a5d3df8ae13.
   613  
   614  define KVM_ASSIGN_DEV_IRQ	0x4040AE70
   615  define KVM_ASSIGN_PCI_DEVICE	0x8040AE69
   616  define KVM_ASSIGN_SET_INTX_MASK	0x4040AEA4
   617  define KVM_ASSIGN_SET_MSIX_ENTRY	0x4010AE74
   618  define KVM_ASSIGN_SET_MSIX_NR	0x4008AE73
   619  define KVM_DEASSIGN_DEV_IRQ	0x4040AE75
   620  define KVM_DEASSIGN_PCI_DEVICE	0x4040AE72
   621  # Register descriptions generated by tools/arm64/registers.go
   622  kvm_regs_arm64_sys = 0x6030000000138002, 0x6030000000138010, 0x6030000000138012, 0x603000000013801a, 0x6030000000138032, 0x6030000000138004, 0x603000000013800c, 0x6030000000138014, 0x603000000013801c, 0x6030000000138024, 0x603000000013802c, 0x6030000000138034, 0x603000000013803c, 0x6030000000138044, 0x603000000013804c, 0x6030000000138054, 0x603000000013805c, 0x6030000000138064, 0x603000000013806c, 0x6030000000138074, 0x603000000013807c, 0x6030000000138005, 0x603000000013800d, 0x6030000000138015, 0x603000000013801d, 0x6030000000138025, 0x603000000013802d, 0x6030000000138035, 0x603000000013803d, 0x6030000000138045, 0x603000000013804d, 0x6030000000138055, 0x603000000013805d, 0x6030000000138065, 0x603000000013806d, 0x6030000000138075, 0x603000000013807d, 0x6030000000138006, 0x603000000013800e, 0x6030000000138016, 0x603000000013801e, 0x6030000000138026, 0x603000000013802e, 0x6030000000138036, 0x603000000013803e, 0x6030000000138046, 0x603000000013804e, 0x6030000000138056, 0x603000000013805e, 0x6030000000138066, 0x603000000013806e, 0x6030000000138076, 0x603000000013807e, 0x6030000000138007, 0x603000000013800f, 0x6030000000138017, 0x603000000013801f, 0x6030000000138027, 0x603000000013802f, 0x6030000000138037, 0x603000000013803f, 0x6030000000138047, 0x603000000013804f, 0x6030000000138057, 0x603000000013805f, 0x6030000000138067, 0x603000000013806f, 0x6030000000138077, 0x603000000013807f, 0x6030000000138080, 0x6030000000138084, 0x603000000013808c, 0x603000000013809c, 0x60300000001380a4, 0x60300000001383c6, 0x60300000001383ce, 0x60300000001383f6, 0x6030000000139808, 0x6030000000139820, 0x6030000000139828, 0x6030000000139828, 0x603000000013a038, 0x603000000013c000, 0x603000000013c005, 0x603000000013c006, 0x603000000013c008, 0x603000000013c009, 0x603000000013c00a, 0x603000000013c00b, 0x603000000013c00c, 0x603000000013c00d, 0x603000000013c00e, 0x603000000013c00f, 0x603000000013c010, 0x603000000013c011, 0x603000000013c012, 0x603000000013c013, 0x603000000013c014, 0x603000000013c015, 0x603000000013c016, 0x603000000013c017, 0x603000000013c018, 0x603000000013c019, 0x603000000013c01a, 0x603000000013c01c, 0x603000000013c01d, 0x603000000013c01e, 0x603000000013c020, 0x603000000013c021, 0x603000000013c024, 0x603000000013c028, 0x603000000013c029, 0x603000000013c02c, 0x603000000013c02d, 0x603000000013c030, 0x603000000013c031, 0x603000000013c032, 0x603000000013c038, 0x603000000013c039, 0x603000000013c03a, 0x603000000013c080, 0x603000000013c081, 0x603000000013c082, 0x603000000013c085, 0x603000000013c086, 0x603000000013c090, 0x603000000013c091, 0x603000000013c100, 0x603000000013c101, 0x603000000013c102, 0x603000000013c108, 0x603000000013c109, 0x603000000013c10a, 0x603000000013c10b, 0x603000000013c110, 0x603000000013c111, 0x603000000013c112, 0x603000000013c113, 0x603000000013c118, 0x603000000013c119, 0x603000000013c200, 0x603000000013c201, 0x603000000013c208, 0x603000000013c210, 0x6030000000130205, 0x603000000013c212, 0x603000000013c213, 0x6030000000130204, 0x603000000013c214, 0x6030000000130203, 0x603000000013c230, 0x603000000013c288, 0x603000000013c289, 0x603000000013c290, 0x603000000013c298, 0x603000000013c299, 0x603000000013c2a0, 0x603000000013c2a1, 0x603000000013c2a2, 0x603000000013c2a3, 0x603000000013c2a4, 0x603000000013c2a5, 0x603000000013c2a6, 0x603000000013c2a8, 0x603000000013c2a9, 0x603000000013c2aa, 0x603000000013c2ab, 0x603000000013c2b0, 0x603000000013c2b1, 0x603000000013c300, 0x603000000013c3a0, 0x603000000013c4c8, 0x603000000013c4c9, 0x603000000013c4ca, 0x603000000013c4cb, 0x603000000013c4cc, 0x603000000013c4cd, 0x603000000013c4ce, 0x603000000013c4cf, 0x603000000013c4d0, 0x603000000013c4d1, 0x603000000013c4d3, 0x603000000013c4d7, 0x603000000013c4f1, 0x603000000013c4f2, 0x603000000013c4f6, 0x603000000013c510, 0x603000000013c518, 0x603000000013c520, 0x603000000013c521, 0x603000000013c522, 0x603000000013c523, 0x603000000013c524, 0x603000000013c527, 0x603000000013c528, 0x603000000013c529, 0x603000000013c600, 0x603000000013c601, 0x603000000013c602, 0x603000000013c608, 0x603000000013c609, 0x603000000013c640, 0x603000000013c641, 0x603000000013c642, 0x603000000013c643, 0x603000000013c644, 0x603000000013c645, 0x603000000013c646, 0x603000000013c647, 0x603000000013c648, 0x603000000013c649, 0x603000000013c64a, 0x603000000013c64b, 0x603000000013c659, 0x603000000013c65b, 0x603000000013c65d, 0x603000000013c65e, 0x603000000013c65f, 0x603000000013c660, 0x603000000013c661, 0x603000000013c662, 0x603000000013c663, 0x603000000013c664, 0x603000000013c665, 0x603000000013c666, 0x603000000013c667, 0x603000000013c681, 0x603000000013c684, 0x603000000013c685, 0x603000000013c687, 0x603000000013c708, 0x603000000013c800, 0x603000000013c801, 0x603000000013c802, 0x603000000013c804, 0x603000000013c807, 0x603000000013d000, 0x603000000013d801, 0x603000000013d807, 0x603000000013d920, 0x603000000013d921, 0x603000000013da10, 0x603000000013da11, 0x603000000013da15, 0x6030000000131a02, 0x603000000013da16, 0x6030000000131a01, 0x603000000013da17, 0x6030000000131a04, 0x603000000013da20, 0x603000000013da21, 0x603000000013da28, 0x603000000013da29, 0x603000000013dce0, 0x603000000013dce1, 0x603000000013dce2, 0x603000000013dce3, 0x603000000013dce4, 0x603000000013dce5, 0x603000000013dce6, 0x603000000013dce7, 0x603000000013dce8, 0x603000000013dce9, 0x603000000013dcea, 0x603000000013dcf0, 0x603000000013dcf3, 0x603000000013de82, 0x603000000013de83, 0x603000000013de87, 0x603000000013de90, 0x603000000013de91, 0x603000000013de92, 0x603000000013de93, 0x603000000013de94, 0x603000000013de95, 0x603000000013de96, 0x603000000013de98, 0x603000000013de99, 0x603000000013dea0, 0x603000000013dea1, 0x603000000013dea2, 0x603000000013dea3, 0x603000000013dea4, 0x603000000013dea5, 0x603000000013dea6, 0x603000000013dea7, 0x603000000013dea8, 0x603000000013dea9, 0x603000000013deaa, 0x603000000013deab, 0x603000000013deac, 0x603000000013dead, 0x603000000013deae, 0x603000000013deaf, 0x603000000013deb0, 0x603000000013deb1, 0x603000000013deb2, 0x603000000013deb3, 0x603000000013deb4, 0x603000000013deb5, 0x603000000013deb6, 0x603000000013deb7, 0x603000000013deb8, 0x603000000013deb9, 0x603000000013deba, 0x603000000013debb, 0x603000000013debc, 0x603000000013debd, 0x603000000013debe, 0x603000000013debf, 0x603000000013dee0, 0x603000000013dee1, 0x603000000013dee2, 0x603000000013dee3, 0x603000000013dee4, 0x603000000013dee5, 0x603000000013dee6, 0x603000000013dee7, 0x603000000013dee8, 0x603000000013dee9, 0x603000000013deea, 0x603000000013deeb, 0x603000000013deec, 0x603000000013deed, 0x603000000013deee, 0x603000000013deef, 0x603000000013def0, 0x603000000013def1, 0x603000000013def2, 0x603000000013def3, 0x603000000013def4, 0x603000000013def5, 0x603000000013def6, 0x603000000013def7, 0x603000000013def8, 0x603000000013def9, 0x603000000013defa, 0x603000000013defb, 0x603000000013defc, 0x603000000013defd, 0x603000000013defe, 0x603000000013deff, 0x603000000013df00, 0x603000000013df01, 0x603000000013df02, 0x603000000013df05, 0x603000000013df06, 0x603000000013df10, 0x603000000013df11, 0x603000000013df12, 0x603000000013df18, 0x603000000013df19, 0x603000000013df1a, 0x603000000013df40, 0x603000000013df41, 0x603000000013df42, 0x603000000013df43, 0x603000000013df44, 0x603000000013df45, 0x603000000013df46, 0x603000000013df47, 0x603000000013df48, 0x603000000013df49, 0x603000000013df4a, 0x603000000013df4b, 0x603000000013df4c, 0x603000000013df4d, 0x603000000013df4e, 0x603000000013df4f, 0x603000000013df50, 0x603000000013df51, 0x603000000013df52, 0x603000000013df53, 0x603000000013df54, 0x603000000013df55, 0x603000000013df56, 0x603000000013df57, 0x603000000013df58, 0x603000000013df59, 0x603000000013df5a, 0x603000000013df5b, 0x603000000013df5c, 0x603000000013df5d, 0x603000000013df5e, 0x603000000013df5f, 0x603000000013df7f, 0x603000000013df60, 0x603000000013df61, 0x603000000013df62, 0x603000000013df63, 0x603000000013df64, 0x603000000013df65, 0x603000000013df66, 0x603000000013df67, 0x603000000013df68, 0x603000000013df69, 0x603000000013df6a, 0x603000000013df6b, 0x603000000013df6c, 0x603000000013df6d, 0x603000000013df6e, 0x603000000013df6f, 0x603000000013df70, 0x603000000013df71, 0x603000000013df72, 0x603000000013df73, 0x603000000013df74, 0x603000000013df75, 0x603000000013df76, 0x603000000013df77, 0x603000000013df78, 0x603000000013df79, 0x603000000013df7a, 0x603000000013df7b, 0x603000000013df7c, 0x603000000013df7d, 0x603000000013df7e, 0x603000000013df7f, 0x603000000013e000, 0x603000000013e005, 0x603000000013e080, 0x603000000013e081, 0x603000000013e088, 0x603000000013e089, 0x603000000013e08a, 0x603000000013e08b, 0x603000000013e08c, 0x603000000013e08d, 0x603000000013e08e, 0x603000000013e08f, 0x603000000013e090, 0x603000000013e091, 0x603000000013e092, 0x603000000013e099, 0x603000000013e100, 0x603000000013e101, 0x603000000013e102, 0x603000000013e108, 0x603000000013e10a, 0x603000000013e110, 0x603000000013e130, 0x603000000013e132, 0x603000000013e180, 0x603000000013e18c, 0x603000000013e18d, 0x603000000013e18e, 0x603000000013e200, 0x603000000013e201, 0x603000000013e208, 0x603000000013e218, 0x603000000013e219, 0x603000000013e21a, 0x603000000013e21b, 0x603000000013e281, 0x603000000013e288, 0x603000000013e289, 0x603000000013e290, 0x603000000013e293, 0x603000000013e298, 0x603000000013e2b0, 0x603000000013e300, 0x603000000013e304, 0x603000000013e4c8, 0x603000000013e510, 0x603000000013e518, 0x603000000013e520, 0x603000000013e521, 0x603000000013e528, 0x603000000013e530, 0x603000000013e531, 0x603000000013e532, 0x603000000013e533, 0x603000000013e534, 0x603000000013e535, 0x603000000013e536, 0x603000000013e537, 0x603000000013e600, 0x603000000013e601, 0x603000000013e602, 0x603000000013e609, 0x603000000013e640, 0x603000000013e641, 0x603000000013e642, 0x603000000013e643, 0x603000000013e648, 0x603000000013e649, 0x603000000013e64a, 0x603000000013e64b, 0x603000000013e64d, 0x603000000013e658, 0x603000000013e659, 0x603000000013e65a, 0x603000000013e65b, 0x603000000013e65d, 0x603000000013e65f, 0x603000000013e660, 0x603000000013e661, 0x603000000013e662, 0x603000000013e663, 0x603000000013e664, 0x603000000013e665, 0x603000000013e666, 0x603000000013e667, 0x603000000013e668, 0x603000000013e669, 0x603000000013e66a, 0x603000000013e66b, 0x603000000013e66c, 0x603000000013e66d, 0x603000000013e66e, 0x603000000013e66f, 0x603000000013e681, 0x603000000013e682, 0x603000000013e687, 0x603000000013e6c0, 0x603000000013e6c1, 0x603000000013e6c2, 0x603000000013e6c3, 0x603000000013e6c4, 0x603000000013e6c5, 0x603000000013e6c6, 0x603000000013e6c7, 0x603000000013e6c8, 0x603000000013e6c9, 0x603000000013e6ca, 0x603000000013e6cb, 0x603000000013e6cc, 0x603000000013e6cd, 0x603000000013e6ce, 0x603000000013e6cf, 0x603000000013e6d0, 0x603000000013e6d1, 0x603000000013e6d2, 0x603000000013e6d3, 0x603000000013e6d4, 0x603000000013e6d5, 0x603000000013e6d6, 0x603000000013e6d7, 0x603000000013e6d8, 0x603000000013e6d9, 0x603000000013e6da, 0x603000000013e6db, 0x603000000013e6dc, 0x603000000013e6dd, 0x603000000013e6de, 0x603000000013e6df, 0x603000000013e703, 0x603000000013e706, 0x603000000013e708, 0x603000000013e710, 0x603000000013e711, 0x603000000013e712, 0x603000000013e718, 0x603000000013e719, 0x603000000013e71a, 0x603000000013e720, 0x603000000013e721, 0x603000000013e722, 0x603000000013e728, 0x603000000013e729, 0x603000000013e72a, 0x603000000013f080, 0x603000000013f081, 0x603000000013f088, 0x603000000013f089, 0x603000000013f08a, 0x603000000013f090, 0x603000000013f099, 0x603000000013f100, 0x603000000013f102, 0x603000000013f200, 0x603000000013f201, 0x603000000013f208, 0x603000000013f288, 0x603000000013f289, 0x603000000013f290, 0x603000000013f2b0, 0x603000000013f300, 0x603000000013f510, 0x603000000013f518, 0x603000000013f528, 0x603000000013f600, 0x603000000013f601, 0x603000000013f602, 0x603000000013f664, 0x603000000013f665, 0x603000000013f667, 0x603000000013f682, 0x603000000013f687, 0x603000000013ff10, 0x603000000013ff11, 0x603000000013ff12
   623  # Extra registers that KVM_GET_REG_LIST prints on QEMU
   624  kvm_regs_arm64_extra = 0x603000000013c01b, 0x603000000013c01f, 0x603000000013c022, 0x603000000013c023, 0x603000000013c025, 0x603000000013c026, 0x603000000013c027, 0x603000000013c02a, 0x603000000013c02b, 0x603000000013c02e, 0x603000000013c02f, 0x603000000013c033, 0x603000000013c034, 0x603000000013c035, 0x603000000013c036, 0x603000000013c037, 0x603000000013c03b, 0x603000000013c03c, 0x603000000013c03d, 0x603000000013c03e, 0x603000000013c03f, 0x603000000013c103, 0x603000000013c512, 0x603000000013c513
   625  # End of register descriptions generated by tools/arm64/registers.go