1 /*	$OpenBSD: arm64_vm.c,v 1.3 2024/09/21 04:12:18 mlarkin Exp $	*/
2 /*
3  * Copyright (c) 2024 Dave Voutila <dv@openbsd.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 #include <sys/types.h>
18 
19 #include "vmd.h"
20 #include "vmm.h"
21 
22 void
create_memory_map(struct vm_create_params * vcp)23 create_memory_map(struct vm_create_params *vcp)
24 {
25 	fatalx("%s: unimplemented", __func__);
26 	/* NOTREACHED */
27 }
28 
29 int
load_firmware(struct vmd_vm * vm,struct vcpu_reg_state * vrs)30 load_firmware(struct vmd_vm *vm, struct vcpu_reg_state *vrs)
31 {
32 	fatalx("%s: unimplemented", __func__);
33 	/* NOTREACHED */
34 	return (-1);
35 }
36 
37 void
init_emulated_hw(struct vmop_create_params * vcp,int child_cdrom,int child_disks[][VM_MAX_BASE_PER_DISK],int * child_taps)38 init_emulated_hw(struct vmop_create_params *vcp, int child_cdrom,
39     int child_disks[][VM_MAX_BASE_PER_DISK], int *child_taps)
40 {
41 	fatalx("%s: unimplemented", __func__);
42 	/* NOTREACHED */
43 }
44 
45 void
restore_emulated_hw(struct vm_create_params * vcp,int fd,int * child_taps,int child_disks[][VM_MAX_BASE_PER_DISK],int child_cdrom)46 restore_emulated_hw(struct vm_create_params *vcp, int fd, int *child_taps,
47     int child_disks[][VM_MAX_BASE_PER_DISK], int child_cdrom)
48 {
49 	fatalx("%s: unimplemented", __func__);
50 	/* NOTREACHED */
51 }
52 
53 void
pause_vm_md(struct vmd_vm * vm)54 pause_vm_md(struct vmd_vm *vm)
55 {
56 	fatalx("%s: unimplemented", __func__);
57 	/* NOTREACHED */
58 }
59 
60 void
unpause_vm_md(struct vmd_vm * vm)61 unpause_vm_md(struct vmd_vm *vm)
62 {
63 	fatalx("%s: unimplemented", __func__);
64 	/* NOTREACHED */
65 }
66 
67 int
dump_devs(int fd)68 dump_devs(int fd)
69 {
70 	fatalx("%s: unimplemented", __func__);
71 	/* NOTREACHED */
72 	return (-1);
73 }
74 
75 int
dump_send_header(int fd)76 dump_send_header(int fd)
77 {
78 	fatalx("%s: unimplemented", __func__);
79 	/* NOTREACHED */
80 	return (-1);
81 }
82 
83 void *
hvaddr_mem(paddr_t gpa,size_t len)84 hvaddr_mem(paddr_t gpa, size_t len)
85 {	fatalx("%s: unimplemented", __func__);
86 	/* NOTREACHED */
87 	return (NULL);
88 }
89 
90 int
write_mem(paddr_t dst,const void * buf,size_t len)91 write_mem(paddr_t dst, const void *buf, size_t len)
92 {
93 	fatalx("%s: unimplemented", __func__);
94 	/* NOTREACHED */
95 	return (-1);
96 }
97 
98 int
read_mem(paddr_t src,void * buf,size_t len)99 read_mem(paddr_t src, void *buf, size_t len)
100 {
101 	fatalx("%s: unimplemented", __func__);
102 	/* NOTREACHED */
103 	return (-1);
104 }
105 
106 int
intr_pending(struct vmd_vm * vm)107 intr_pending(struct vmd_vm *vm)
108 {
109 	fatalx("%s: unimplemented", __func__);
110 	/* NOTREACHED */
111 	return (-1);
112 }
113 
114 void
intr_toggle_el(struct vmd_vm * vm,int irq,int val)115 intr_toggle_el(struct vmd_vm *vm, int irq, int val)
116 {
117 	fatalx("%s: unimplemented", __func__);
118 	/* NOTREACHED */
119 }
120 
121 int
intr_ack(struct vmd_vm * vm)122 intr_ack(struct vmd_vm *vm)
123 {
124 	fatalx("%s: unimplemented", __func__);
125 	/* NOTREACHED */
126 	return (-1);
127 }
128 
129 void
vcpu_assert_irq(uint32_t vm_id,uint32_t vcpu_id,int irq)130 vcpu_assert_irq(uint32_t vm_id, uint32_t vcpu_id, int irq)
131 {
132 	fatalx("%s: unimplemented", __func__);
133 }
134 
135 void
vcpu_deassert_irq(uint32_t vm_id,uint32_t vcpu_id,int irq)136 vcpu_deassert_irq(uint32_t vm_id, uint32_t vcpu_id, int irq)
137 {
138 	fatalx("%s: unimplemented", __func__);
139 }
140 
141 int
vmd_check_vmh(struct vm_dump_header * vmh)142 vmd_check_vmh(struct vm_dump_header *vmh)
143 {
144 	fatalx("%s: unimplemented", __func__);
145 	/* NOTREACHED */
146 	return (-1);
147 }
148 
149 int
vcpu_exit(struct vm_run_params * vrp)150 vcpu_exit(struct vm_run_params *vrp)
151 {
152 	fatalx("%s: unimplemented", __func__);
153 	/* NOTREACHED */
154 	return (-1);
155 }
156 
157 uint8_t
vcpu_exit_pci(struct vm_run_params * vrp)158 vcpu_exit_pci(struct vm_run_params *vrp)
159 {
160 	fatalx("%s: unimplemented", __func__);
161 	/* NOTREACHED */
162 	return (0xff);
163 }
164 
165 void
set_return_data(struct vm_exit * vei,uint32_t data)166 set_return_data(struct vm_exit *vei, uint32_t data)
167 {
168 	fatalx("%s: unimplemented", __func__);
169 	/* NOTREACHED */
170 	return;
171 }
172 
173 void
get_input_data(struct vm_exit * vei,uint32_t * data)174 get_input_data(struct vm_exit *vei, uint32_t *data)
175 {
176 	fatalx("%s: unimplemented", __func__);
177 	/* NOTREACHED */
178 	return;
179 }
180 
181 int
sev_init(struct vmd_vm * vm)182 sev_init(struct vmd_vm *vm)
183 {
184 	fatalx("%s: unimplemented", __func__);
185 	/* NOTREACHED */
186 	return (-1);
187 }
188 
189 int
sev_shutdown(struct vmd_vm * vm)190 sev_shutdown(struct vmd_vm *vm)
191 {
192 	fatalx("%s: unimplemented", __func__);
193 	/* NOTREACHED */
194 	return (-1);
195 }
196 
197 int
sev_activate(struct vmd_vm * vm,int vcpu_id)198 sev_activate(struct vmd_vm *vm, int vcpu_id)
199 {
200 	fatalx("%s: unimplemented", __func__);
201 	/* NOTREACHED */
202 	return (-1);
203 }
204 
205 int
sev_encrypt_memory(struct vmd_vm * vm)206 sev_encrypt_memory(struct vmd_vm *vm)
207 {
208 	fatalx("%s: unimplemented", __func__);
209 	/* NOTREACHED */
210 	return (-1);
211 }
212