xref: /openbsd-src/usr.sbin/vmd/arm64_vm.c (revision 4716c5471a32e03ca304fca1af00345a55e3d9f1)
1*4716c547Smlarkin /*	$OpenBSD: arm64_vm.c,v 1.3 2024/09/21 04:12:18 mlarkin Exp $	*/
2234ee546Sdv /*
3234ee546Sdv  * Copyright (c) 2024 Dave Voutila <dv@openbsd.org>
4234ee546Sdv  *
5234ee546Sdv  * Permission to use, copy, modify, and distribute this software for any
6234ee546Sdv  * purpose with or without fee is hereby granted, provided that the above
7234ee546Sdv  * copyright notice and this permission notice appear in all copies.
8234ee546Sdv  *
9234ee546Sdv  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10234ee546Sdv  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11234ee546Sdv  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12234ee546Sdv  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13234ee546Sdv  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14234ee546Sdv  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15234ee546Sdv  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16234ee546Sdv  */
17234ee546Sdv #include <sys/types.h>
18234ee546Sdv 
19234ee546Sdv #include "vmd.h"
20*4716c547Smlarkin #include "vmm.h"
21234ee546Sdv 
22234ee546Sdv void
23234ee546Sdv create_memory_map(struct vm_create_params *vcp)
24234ee546Sdv {
25234ee546Sdv 	fatalx("%s: unimplemented", __func__);
26234ee546Sdv 	/* NOTREACHED */
27234ee546Sdv }
28234ee546Sdv 
29234ee546Sdv int
30234ee546Sdv load_firmware(struct vmd_vm *vm, struct vcpu_reg_state *vrs)
31234ee546Sdv {
32234ee546Sdv 	fatalx("%s: unimplemented", __func__);
33234ee546Sdv 	/* NOTREACHED */
34234ee546Sdv 	return (-1);
35234ee546Sdv }
36234ee546Sdv 
37234ee546Sdv void
38234ee546Sdv init_emulated_hw(struct vmop_create_params *vcp, int child_cdrom,
39234ee546Sdv     int child_disks[][VM_MAX_BASE_PER_DISK], int *child_taps)
40234ee546Sdv {
41234ee546Sdv 	fatalx("%s: unimplemented", __func__);
42234ee546Sdv 	/* NOTREACHED */
43234ee546Sdv }
44234ee546Sdv 
45234ee546Sdv void
46234ee546Sdv restore_emulated_hw(struct vm_create_params *vcp, int fd, int *child_taps,
47234ee546Sdv     int child_disks[][VM_MAX_BASE_PER_DISK], int child_cdrom)
48234ee546Sdv {
49234ee546Sdv 	fatalx("%s: unimplemented", __func__);
50234ee546Sdv 	/* NOTREACHED */
51234ee546Sdv }
52234ee546Sdv 
53234ee546Sdv void
54234ee546Sdv pause_vm_md(struct vmd_vm *vm)
55234ee546Sdv {
56234ee546Sdv 	fatalx("%s: unimplemented", __func__);
57234ee546Sdv 	/* NOTREACHED */
58234ee546Sdv }
59234ee546Sdv 
60234ee546Sdv void
61234ee546Sdv unpause_vm_md(struct vmd_vm *vm)
62234ee546Sdv {
63234ee546Sdv 	fatalx("%s: unimplemented", __func__);
64234ee546Sdv 	/* NOTREACHED */
65234ee546Sdv }
66234ee546Sdv 
67234ee546Sdv int
68234ee546Sdv dump_devs(int fd)
69234ee546Sdv {
70234ee546Sdv 	fatalx("%s: unimplemented", __func__);
71234ee546Sdv 	/* NOTREACHED */
72234ee546Sdv 	return (-1);
73234ee546Sdv }
74234ee546Sdv 
75234ee546Sdv int
76234ee546Sdv dump_send_header(int fd)
77234ee546Sdv {
78234ee546Sdv 	fatalx("%s: unimplemented", __func__);
79234ee546Sdv 	/* NOTREACHED */
80234ee546Sdv 	return (-1);
81234ee546Sdv }
82234ee546Sdv 
83234ee546Sdv void *
84234ee546Sdv hvaddr_mem(paddr_t gpa, size_t len)
85234ee546Sdv {	fatalx("%s: unimplemented", __func__);
86234ee546Sdv 	/* NOTREACHED */
87234ee546Sdv 	return (NULL);
88234ee546Sdv }
89234ee546Sdv 
90234ee546Sdv int
91234ee546Sdv write_mem(paddr_t dst, const void *buf, size_t len)
92234ee546Sdv {
93234ee546Sdv 	fatalx("%s: unimplemented", __func__);
94234ee546Sdv 	/* NOTREACHED */
95234ee546Sdv 	return (-1);
96234ee546Sdv }
97234ee546Sdv 
98234ee546Sdv int
99234ee546Sdv read_mem(paddr_t src, void *buf, size_t len)
100234ee546Sdv {
101234ee546Sdv 	fatalx("%s: unimplemented", __func__);
102234ee546Sdv 	/* NOTREACHED */
103234ee546Sdv 	return (-1);
104234ee546Sdv }
105234ee546Sdv 
106234ee546Sdv int
107234ee546Sdv intr_pending(struct vmd_vm *vm)
108234ee546Sdv {
109234ee546Sdv 	fatalx("%s: unimplemented", __func__);
110234ee546Sdv 	/* NOTREACHED */
111234ee546Sdv 	return (-1);
112234ee546Sdv }
113234ee546Sdv 
114234ee546Sdv void
115234ee546Sdv intr_toggle_el(struct vmd_vm *vm, int irq, int val)
116234ee546Sdv {
117234ee546Sdv 	fatalx("%s: unimplemented", __func__);
118234ee546Sdv 	/* NOTREACHED */
119234ee546Sdv }
120234ee546Sdv 
121234ee546Sdv int
122234ee546Sdv intr_ack(struct vmd_vm *vm)
123234ee546Sdv {
124234ee546Sdv 	fatalx("%s: unimplemented", __func__);
125234ee546Sdv 	/* NOTREACHED */
126234ee546Sdv 	return (-1);
127234ee546Sdv }
128234ee546Sdv 
129234ee546Sdv void
130234ee546Sdv vcpu_assert_irq(uint32_t vm_id, uint32_t vcpu_id, int irq)
131234ee546Sdv {
132234ee546Sdv 	fatalx("%s: unimplemented", __func__);
133234ee546Sdv }
134234ee546Sdv 
135234ee546Sdv void
136234ee546Sdv vcpu_deassert_irq(uint32_t vm_id, uint32_t vcpu_id, int irq)
137234ee546Sdv {
138234ee546Sdv 	fatalx("%s: unimplemented", __func__);
139234ee546Sdv }
140234ee546Sdv 
141234ee546Sdv int
142234ee546Sdv vmd_check_vmh(struct vm_dump_header *vmh)
143234ee546Sdv {
144234ee546Sdv 	fatalx("%s: unimplemented", __func__);
145234ee546Sdv 	/* NOTREACHED */
146234ee546Sdv 	return (-1);
147234ee546Sdv }
148234ee546Sdv 
149234ee546Sdv int
150234ee546Sdv vcpu_exit(struct vm_run_params *vrp)
151234ee546Sdv {
152234ee546Sdv 	fatalx("%s: unimplemented", __func__);
153234ee546Sdv 	/* NOTREACHED */
154234ee546Sdv 	return (-1);
155234ee546Sdv }
156234ee546Sdv 
157234ee546Sdv uint8_t
158234ee546Sdv vcpu_exit_pci(struct vm_run_params *vrp)
159234ee546Sdv {
160234ee546Sdv 	fatalx("%s: unimplemented", __func__);
161234ee546Sdv 	/* NOTREACHED */
162234ee546Sdv 	return (0xff);
163234ee546Sdv }
164f4b47ae8Sbluhm 
165f4b47ae8Sbluhm void
166f4b47ae8Sbluhm set_return_data(struct vm_exit *vei, uint32_t data)
167f4b47ae8Sbluhm {
168f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
169f4b47ae8Sbluhm 	/* NOTREACHED */
170f4b47ae8Sbluhm 	return;
171f4b47ae8Sbluhm }
172f4b47ae8Sbluhm 
173f4b47ae8Sbluhm void
174f4b47ae8Sbluhm get_input_data(struct vm_exit *vei, uint32_t *data)
175f4b47ae8Sbluhm {
176f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
177f4b47ae8Sbluhm 	/* NOTREACHED */
178f4b47ae8Sbluhm 	return;
179f4b47ae8Sbluhm }
180f4b47ae8Sbluhm 
181f4b47ae8Sbluhm int
182f4b47ae8Sbluhm sev_init(struct vmd_vm *vm)
183f4b47ae8Sbluhm {
184f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
185f4b47ae8Sbluhm 	/* NOTREACHED */
186f4b47ae8Sbluhm 	return (-1);
187f4b47ae8Sbluhm }
188f4b47ae8Sbluhm 
189f4b47ae8Sbluhm int
190f4b47ae8Sbluhm sev_shutdown(struct vmd_vm *vm)
191f4b47ae8Sbluhm {
192f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
193f4b47ae8Sbluhm 	/* NOTREACHED */
194f4b47ae8Sbluhm 	return (-1);
195f4b47ae8Sbluhm }
196f4b47ae8Sbluhm 
197f4b47ae8Sbluhm int
198f4b47ae8Sbluhm sev_activate(struct vmd_vm *vm, int vcpu_id)
199f4b47ae8Sbluhm {
200f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
201f4b47ae8Sbluhm 	/* NOTREACHED */
202f4b47ae8Sbluhm 	return (-1);
203f4b47ae8Sbluhm }
204f4b47ae8Sbluhm 
205f4b47ae8Sbluhm int
206f4b47ae8Sbluhm sev_encrypt_memory(struct vmd_vm *vm)
207f4b47ae8Sbluhm {
208f4b47ae8Sbluhm 	fatalx("%s: unimplemented", __func__);
209f4b47ae8Sbluhm 	/* NOTREACHED */
210f4b47ae8Sbluhm 	return (-1);
211f4b47ae8Sbluhm }
212