xref: /illumos-gate/usr/src/cmd/truss/codes_bhyve.c (revision 7671517e13b8123748eda4ef1ee165c6d9dba7fe)
1*7671517eSToomas Soome /*
2*7671517eSToomas Soome  * This file and its contents are supplied under the terms of the
3*7671517eSToomas Soome  * Common Development and Distribution License ("CDDL"), version 1.0.
4*7671517eSToomas Soome  * You may only use this file in accordance with the terms of version
5*7671517eSToomas Soome  * 1.0 of the CDDL.
6*7671517eSToomas Soome  *
7*7671517eSToomas Soome  * A full copy of the text of the CDDL should have accompanied this
8*7671517eSToomas Soome  * source.  A copy of the CDDL is also available via the Internet at
9*7671517eSToomas Soome  * http://www.illumos.org/license/CDDL.
10*7671517eSToomas Soome  */
11*7671517eSToomas Soome 
12*7671517eSToomas Soome /*
13*7671517eSToomas Soome  * Copyright 2023 Toomas Soome <tsoome@me.com>
14*7671517eSToomas Soome  */
15*7671517eSToomas Soome 
16*7671517eSToomas Soome #include <sys/types.h>
17*7671517eSToomas Soome #include <sys/sysmacros.h>
18*7671517eSToomas Soome #include "codes.h"
19*7671517eSToomas Soome 
20*7671517eSToomas Soome #if defined(__x86)
21*7671517eSToomas Soome 
22*7671517eSToomas Soome /* vmm_dev.h is expecting to have the types below. */
23*7671517eSToomas Soome typedef uint64_t vm_paddr_t;
24*7671517eSToomas Soome typedef int64_t vm_ooffset_t;
25*7671517eSToomas Soome #include <sys/vmm_dev.h>
26*7671517eSToomas Soome 
27*7671517eSToomas Soome /* VMM ioctls */
28*7671517eSToomas Soome const struct ioc vmmctl_ioc[] = {
29*7671517eSToomas Soome 	{ (uint_t)VMM_CREATE_VM,		"VMM_CREATE_VM", NULL },
30*7671517eSToomas Soome 	{ (uint_t)VMM_DESTROY_VM,		"VMM_DESTROY_VM", NULL },
31*7671517eSToomas Soome 	{ (uint_t)VMM_VM_SUPPORTED,		"VMM_VM_SUPPORTED", NULL },
32*7671517eSToomas Soome 
33*7671517eSToomas Soome 	{ (uint_t)VMM_RESV_QUERY,		"VMM_RESV_QUERY", NULL },
34*7671517eSToomas Soome 	{ (uint_t)VMM_RESV_SET_TARGET,		"VMM_RESV_SET_TARGET", NULL }
35*7671517eSToomas Soome };
36*7671517eSToomas Soome 
37*7671517eSToomas Soome const struct ioc vmm_cpu_ioc[] = {
38*7671517eSToomas Soome 	{ (uint_t)VM_RUN,			"VM_RUN", NULL },
39*7671517eSToomas Soome 	{ (uint_t)VM_SET_REGISTER,		"VM_SET_REGISTER", NULL },
40*7671517eSToomas Soome 	{ (uint_t)VM_GET_REGISTER,		"VM_GET_REGISTER", NULL },
41*7671517eSToomas Soome 	{ (uint_t)VM_SET_SEGMENT_DESCRIPTOR,	"VM_SET_SEGMENT_DESCRIPTOR",
42*7671517eSToomas Soome 		NULL },
43*7671517eSToomas Soome 	{ (uint_t)VM_GET_SEGMENT_DESCRIPTOR,	"VM_GET_SEGMENT_DESCRIPTOR",
44*7671517eSToomas Soome 		NULL },
45*7671517eSToomas Soome 	{ (uint_t)VM_SET_REGISTER_SET,		"VM_SET_REGISTER_SET", NULL },
46*7671517eSToomas Soome 	{ (uint_t)VM_GET_REGISTER_SET,		"VM_GET_REGISTER_SET", NULL },
47*7671517eSToomas Soome 	{ (uint_t)VM_INJECT_EXCEPTION,		"VM_INJECT_EXCEPTION", NULL },
48*7671517eSToomas Soome 	{ (uint_t)VM_SET_CAPABILITY,		"VM_SET_CAPABILITY", NULL },
49*7671517eSToomas Soome 	{ (uint_t)VM_GET_CAPABILITY,		"VM_GET_CAPABILITY", NULL },
50*7671517eSToomas Soome 	{ (uint_t)VM_PPTDEV_MSI,		"VM_PPTDEV_MSI", NULL },
51*7671517eSToomas Soome 	{ (uint_t)VM_PPTDEV_MSIX,		"VM_PPTDEV_MSIX", NULL },
52*7671517eSToomas Soome 	{ (uint_t)VM_SET_X2APIC_STATE,		"VM_SET_X2APIC_STATE", NULL },
53*7671517eSToomas Soome 	{ (uint_t)VM_GLA2GPA,			"VM_GLA2GPA", NULL },
54*7671517eSToomas Soome 	{ (uint_t)VM_GLA2GPA_NOFAULT,		"VM_GLA2GPA_NOFAULT", NULL },
55*7671517eSToomas Soome 	{ (uint_t)VM_ACTIVATE_CPU,		"VM_ACTIVATE_CPU", NULL },
56*7671517eSToomas Soome 	{ (uint_t)VM_SET_INTINFO,		"VM_SET_INTINFO", NULL },
57*7671517eSToomas Soome 	{ (uint_t)VM_GET_INTINFO,		"VM_GET_INTINFO", NULL },
58*7671517eSToomas Soome 	{ (uint_t)VM_RESTART_INSTRUCTION,	"VM_RESTART_INSTRUCTION",
59*7671517eSToomas Soome 		NULL },
60*7671517eSToomas Soome 	{ (uint_t)VM_SET_KERNEMU_DEV,		"VM_SET_KERNEMU_DEV", NULL },
61*7671517eSToomas Soome 	{ (uint_t)VM_GET_KERNEMU_DEV,		"VM_GET_KERNEMU_DEV", NULL },
62*7671517eSToomas Soome 	{ (uint_t)VM_RESET_CPU,			"VM_RESET_CPU", NULL },
63*7671517eSToomas Soome 	{ (uint_t)VM_GET_RUN_STATE,		"VM_GET_RUN_STATE", NULL },
64*7671517eSToomas Soome 	{ (uint_t)VM_SET_RUN_STATE,		"VM_SET_RUN_STATE", NULL },
65*7671517eSToomas Soome 	{ (uint_t)VM_GET_FPU,			"VM_GET_FPU", NULL },
66*7671517eSToomas Soome 	{ (uint_t)VM_SET_FPU,			"VM_SET_FPU", NULL },
67*7671517eSToomas Soome 	{ (uint_t)VM_GET_CPUID,			"VM_GET_CPUID", NULL },
68*7671517eSToomas Soome 	{ (uint_t)VM_SET_CPUID,			"VM_SET_CPUID", NULL },
69*7671517eSToomas Soome 	{ (uint_t)VM_LEGACY_CPUID,		"VM_LEGACY_CPUID", NULL }
70*7671517eSToomas Soome };
71*7671517eSToomas Soome 
72*7671517eSToomas Soome const struct ioc vmm_lock_ioc[] = {
73*7671517eSToomas Soome 	{ (uint_t)VM_REINIT,			"VM_REINIT", NULL },
74*7671517eSToomas Soome 	{ (uint_t)VM_BIND_PPTDEV,		"VM_BIND_PPTDEV", NULL },
75*7671517eSToomas Soome 	{ (uint_t)VM_UNBIND_PPTDEV,		"VM_UNBIND_PPTDEV", NULL },
76*7671517eSToomas Soome 	{ (uint_t)VM_MAP_PPTDEV_MMIO,		"VM_MAP_PPTDEV_MMIO", NULL },
77*7671517eSToomas Soome 	{ (uint_t)VM_ALLOC_MEMSEG,		"VM_ALLOC_MEMSEG", NULL },
78*7671517eSToomas Soome 	{ (uint_t)VM_MMAP_MEMSEG,		"VM_MMAP_MEMSEG", NULL },
79*7671517eSToomas Soome 	{ (uint_t)VM_PMTMR_LOCATE,		"VM_PMTMR_LOCATE", NULL },
80*7671517eSToomas Soome 	{ (uint_t)VM_MUNMAP_MEMSEG,		"VM_MUNMAP_MEMSEG", NULL },
81*7671517eSToomas Soome 	{ (uint_t)VM_UNMAP_PPTDEV_MMIO,		"VM_UNMAP_PPTDEV_MMIO", NULL },
82*7671517eSToomas Soome 	{ (uint_t)VM_PAUSE,			"VM_PAUSE", NULL },
83*7671517eSToomas Soome 	{ (uint_t)VM_RESUME,			"VM_RESUME", NULL },
84*7671517eSToomas Soome 
85*7671517eSToomas Soome 	{ (uint_t)VM_WRLOCK_CYCLE,		"VM_WRLOCK_CYCLE", NULL }
86*7671517eSToomas Soome };
87*7671517eSToomas Soome 
88*7671517eSToomas Soome const struct ioc vmm_ioc[] = {
89*7671517eSToomas Soome 	{ (uint_t)VM_GET_GPA_PMAP,		"VM_GET_GPA_PMAP", NULL },
90*7671517eSToomas Soome 	{ (uint_t)VM_GET_MEMSEG,		"VM_GET_MEMSEG", NULL },
91*7671517eSToomas Soome 	{ (uint_t)VM_MMAP_GETNEXT,		"VM_MMAP_GETNEXT", NULL },
92*7671517eSToomas Soome 
93*7671517eSToomas Soome 	{ (uint_t)VM_LAPIC_IRQ,			"VM_LAPIC_IRQ", NULL },
94*7671517eSToomas Soome 	{ (uint_t)VM_LAPIC_LOCAL_IRQ,		"VM_LAPIC_LOCAL_IRQ", NULL },
95*7671517eSToomas Soome 	{ (uint_t)VM_LAPIC_MSI,			"VM_LAPIC_MSI", NULL },
96*7671517eSToomas Soome 
97*7671517eSToomas Soome 	{ (uint_t)VM_IOAPIC_ASSERT_IRQ,		"VM_IOAPIC_ASSERT_IRQ", NULL },
98*7671517eSToomas Soome 	{ (uint_t)VM_IOAPIC_DEASSERT_IRQ,	"VM_IOAPIC_DEASSERT_IRQ",
99*7671517eSToomas Soome 		NULL },
100*7671517eSToomas Soome 	{ (uint_t)VM_IOAPIC_PULSE_IRQ,		"VM_IOAPIC_PULSE_IRQ", NULL },
101*7671517eSToomas Soome 
102*7671517eSToomas Soome 	{ (uint_t)VM_ISA_ASSERT_IRQ,		"VM_ISA_ASSERT_IRQ", NULL },
103*7671517eSToomas Soome 	{ (uint_t)VM_ISA_DEASSERT_IRQ,		"VM_ISA_DEASSERT_IRQ", NULL },
104*7671517eSToomas Soome 	{ (uint_t)VM_ISA_PULSE_IRQ,		"VM_ISA_PULSE_IRQ", NULL },
105*7671517eSToomas Soome 	{ (uint_t)VM_ISA_SET_IRQ_TRIGGER,	"VM_ISA_SET_IRQ_TRIGGER",
106*7671517eSToomas Soome 		NULL },
107*7671517eSToomas Soome 
108*7671517eSToomas Soome 	{ (uint_t)VM_RTC_WRITE,			"VM_RTC_WRITE", NULL },
109*7671517eSToomas Soome 	{ (uint_t)VM_RTC_READ,			"VM_RTC_READ", NULL },
110*7671517eSToomas Soome 	{ (uint_t)VM_RTC_SETTIME,		"VM_RTC_SETTIME", NULL },
111*7671517eSToomas Soome 	{ (uint_t)VM_RTC_GETTIME,		"VM_RTC_GETTIME", NULL },
112*7671517eSToomas Soome 
113*7671517eSToomas Soome 	{ (uint_t)VM_SUSPEND,			"VM_SUSPEND", NULL },
114*7671517eSToomas Soome 
115*7671517eSToomas Soome 	{ (uint_t)VM_IOAPIC_PINCOUNT,		"VM_IOAPIC_PINCOUNT", NULL },
116*7671517eSToomas Soome 	{ (uint_t)VM_GET_PPTDEV_LIMITS,		"VM_GET_PPTDEV_LIMITS", NULL },
117*7671517eSToomas Soome 	{ (uint_t)VM_GET_HPET_CAPABILITIES,	"VM_GET_HPET_CAPABILITIES",
118*7671517eSToomas Soome 		NULL },
119*7671517eSToomas Soome 
120*7671517eSToomas Soome 	{ (uint_t)VM_STATS_IOC,			"VM_STATS_IOC", NULL },
121*7671517eSToomas Soome 	{ (uint_t)VM_STAT_DESC,			"VM_STAT_DESC", NULL },
122*7671517eSToomas Soome 
123*7671517eSToomas Soome 	{ (uint_t)VM_INJECT_NMI,		"VM_INJECT_NMI", NULL },
124*7671517eSToomas Soome 	{ (uint_t)VM_GET_X2APIC_STATE,		"VM_GET_X2APIC_STATE", NULL },
125*7671517eSToomas Soome 	{ (uint_t)VM_SET_TOPOLOGY,		"VM_SET_TOPOLOGY", NULL },
126*7671517eSToomas Soome 	{ (uint_t)VM_GET_TOPOLOGY,		"VM_GET_TOPOLOGY", NULL },
127*7671517eSToomas Soome 	{ (uint_t)VM_GET_CPUS,			"VM_GET_CPUS", NULL },
128*7671517eSToomas Soome 	{ (uint_t)VM_SUSPEND_CPU,		"VM_SUSPEND_CPU", NULL },
129*7671517eSToomas Soome 	{ (uint_t)VM_RESUME_CPU,		"VM_RESUME_CPU", NULL },
130*7671517eSToomas Soome 
131*7671517eSToomas Soome 	{ (uint_t)VM_PPTDEV_DISABLE_MSIX,	"VM_PPTDEV_DISABLE_MSIX",
132*7671517eSToomas Soome 		NULL },
133*7671517eSToomas Soome 
134*7671517eSToomas Soome 	{ (uint_t)VM_TRACK_DIRTY_PAGES,		"VM_TRACK_DIRTY_PAGES", NULL },
135*7671517eSToomas Soome 	{ (uint_t)VM_DESC_FPU_AREA,		"VM_DESC_FPU_AREA", NULL },
136*7671517eSToomas Soome 
137*7671517eSToomas Soome 	{ (uint_t)VM_DATA_READ,			"VM_DATA_READ", NULL },
138*7671517eSToomas Soome 	{ (uint_t)VM_DATA_WRITE,		"VM_DATA_WRITE", NULL },
139*7671517eSToomas Soome 
140*7671517eSToomas Soome 	{ (uint_t)VM_SET_AUTODESTRUCT,		"VM_SET_AUTODESTRUCT", NULL },
141*7671517eSToomas Soome 	{ (uint_t)VM_DESTROY_SELF,		"VM_DESTROY_SELF", NULL },
142*7671517eSToomas Soome 	{ (uint_t)VM_DESTROY_PENDING,		"VM_DESTROY_PENDING", NULL },
143*7671517eSToomas Soome 
144*7671517eSToomas Soome 	{ (uint_t)VM_VCPU_BARRIER,		"VM_VCPU_BARRIER", NULL },
145*7671517eSToomas Soome 
146*7671517eSToomas Soome 	{ (uint_t)VM_DEVMEM_GETOFFSET,		"VM_DEVMEM_GETOFFSET", NULL }
147*7671517eSToomas Soome };
148*7671517eSToomas Soome 
149*7671517eSToomas Soome const struct iocs vmm_iocs[] = {
150*7671517eSToomas Soome 	{ .nitems = ARRAY_SIZE(vmmctl_ioc), .data = vmmctl_ioc },
151*7671517eSToomas Soome 	{ .nitems = ARRAY_SIZE(vmm_cpu_ioc), .data = vmm_cpu_ioc },
152*7671517eSToomas Soome 	{ .nitems = ARRAY_SIZE(vmm_lock_ioc), .data = vmm_lock_ioc },
153*7671517eSToomas Soome 	{ .nitems = ARRAY_SIZE(vmm_ioc), .data = vmm_ioc },
154*7671517eSToomas Soome 	{ .nitems = 0, .data = NULL }
155*7671517eSToomas Soome };
156*7671517eSToomas Soome #else
157*7671517eSToomas Soome const struct iocs vmm_iocs[] = {
158*7671517eSToomas Soome 	{ .nitems = 0, .data = NULL }
159*7671517eSToomas Soome };
160*7671517eSToomas Soome #endif /* __x86 */
161