amdv.c revision 267427
1114402Sru/*-
2114402Sru * Copyright (c) 2011 NetApp, Inc.
3114402Sru * All rights reserved.
4114402Sru *
5114402Sru * Redistribution and use in source and binary forms, with or without
6114402Sru * modification, are permitted provided that the following conditions
7114402Sru * are met:
8114402Sru * 1. Redistributions of source code must retain the above copyright
9114402Sru *    notice, this list of conditions and the following disclaimer.
10114402Sru * 2. Redistributions in binary form must reproduce the above copyright
11114402Sru *    notice, this list of conditions and the following disclaimer in the
12114402Sru *    documentation and/or other materials provided with the distribution.
13114402Sru *
14114402Sru * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
15114402Sru * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16114402Sru * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17151497Sru * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
18114402Sru * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19114402Sru * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20114402Sru * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21114402Sru * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22114402Sru * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23114402Sru * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24114402Sru * SUCH DAMAGE.
25114402Sru *
26114402Sru * $FreeBSD: stable/10/sys/amd64/vmm/amd/amdv.c 267427 2014-06-12 19:58:12Z jhb $
27114402Sru */
28114402Sru
29114402Sru#include <sys/cdefs.h>
30114402Sru__FBSDID("$FreeBSD: stable/10/sys/amd64/vmm/amd/amdv.c 267427 2014-06-12 19:58:12Z jhb $");
31114402Sru
32114402Sru#include <sys/param.h>
33114402Sru#include <sys/systm.h>
34114402Sru#include <sys/errno.h>
35114402Sru#include <sys/smp.h>
36114402Sru
37114402Sru#include <machine/vmm.h>
38114402Sru#include "io/iommu.h"
39114402Sru
40151497Srustatic int
41114402Sruamdv_init(int ipinum)
42114402Sru{
43114402Sru
44114402Sru	printf("amdv_init: not implemented\n");
45114402Sru	return (ENXIO);
46114402Sru}
47114402Sru
48114402Srustatic int
49114402Sruamdv_cleanup(void)
50114402Sru{
51114402Sru
52114402Sru	printf("amdv_cleanup: not implemented\n");
53114402Sru	return (ENXIO);
54114402Sru}
55114402Sru
56114402Srustatic void
57114402Sruamdv_resume(void)
58114402Sru{
59151497Sru}
60151497Sru
61114402Srustatic void *
62114402Sruamdv_vminit(struct vm *vm, struct pmap *pmap)
63114402Sru{
64151497Sru
65151497Sru	printf("amdv_vminit: not implemented\n");
66151497Sru	return (NULL);
67114402Sru}
68151497Sru
69151497Srustatic int
70114402Sruamdv_vmrun(void *arg, int vcpu, register_t rip, struct pmap *pmap, void *cookie)
71114402Sru{
72114402Sru
73114402Sru	printf("amdv_vmrun: not implemented\n");
74114402Sru	return (ENXIO);
75114402Sru}
76114402Sru
77114402Srustatic void
78114402Sruamdv_vmcleanup(void *arg)
79114402Sru{
80114402Sru
81114402Sru	printf("amdv_vmcleanup: not implemented\n");
82114402Sru	return;
83114402Sru}
84114402Sru
85114402Srustatic int
86114402Sruamdv_getreg(void *arg, int vcpu, int regnum, uint64_t *retval)
87114402Sru{
88114402Sru
89114402Sru	printf("amdv_getreg: not implemented\n");
90114402Sru	return (EINVAL);
91114402Sru}
92114402Sru
93114402Srustatic int
94114402Sruamdv_setreg(void *arg, int vcpu, int regnum, uint64_t val)
95114402Sru{
96114402Sru
97114402Sru	printf("amdv_setreg: not implemented\n");
98114402Sru	return (EINVAL);
99114402Sru}
100114402Sru
101114402Srustatic int
102114402Sruamdv_getdesc(void *vmi, int vcpu, int num, struct seg_desc *desc)
103114402Sru{
104114402Sru
105114402Sru	printf("amdv_get_desc: not implemented\n");
106114402Sru	return (EINVAL);
107114402Sru}
108114402Sru
109114402Srustatic int
110114402Sruamdv_setdesc(void *vmi, int vcpu, int num, struct seg_desc *desc)
111114402Sru{
112114402Sru
113114402Sru	printf("amdv_get_desc: not implemented\n");
114114402Sru	return (EINVAL);
115114402Sru}
116114402Sru
117114402Srustatic int
118114402Sruamdv_getcap(void *arg, int vcpu, int type, int *retval)
119114402Sru{
120114402Sru
121114402Sru	printf("amdv_getcap: not implemented\n");
122114402Sru	return (EINVAL);
123114402Sru}
124114402Sru
125114402Srustatic int
126114402Sruamdv_setcap(void *arg, int vcpu, int type, int val)
127114402Sru{
128114402Sru
129114402Sru	printf("amdv_setcap: not implemented\n");
130114402Sru	return (EINVAL);
131114402Sru}
132114402Sru
133114402Srustatic struct vmspace *
134114402Sruamdv_vmspace_alloc(vm_offset_t min, vm_offset_t max)
135114402Sru{
136114402Sru
137114402Sru	printf("amdv_vmspace_alloc: not implemented\n");
138114402Sru	return (NULL);
139114402Sru}
140114402Sru
141114402Srustatic void
142114402Sruamdv_vmspace_free(struct vmspace *vmspace)
143114402Sru{
144114402Sru
145114402Sru	printf("amdv_vmspace_free: not implemented\n");
146114402Sru	return;
147114402Sru}
148114402Sru
149114402Srustatic struct vlapic *
150114402Sruamdv_vlapic_init(void *arg, int vcpuid)
151114402Sru{
152114402Sru
153114402Sru	panic("amdv_vlapic_init: not implmented");
154114402Sru}
155114402Sru
156114402Srustatic void
157114402Sruamdv_vlapic_cleanup(void *arg, struct vlapic *vlapic)
158114402Sru{
159114402Sru
160114402Sru	panic("amdv_vlapic_cleanup: not implemented");
161114402Sru}
162114402Sru
163151497Srustruct vmm_ops vmm_ops_amd = {
164151497Sru	amdv_init,
165114402Sru	amdv_cleanup,
166114402Sru	amdv_resume,
167114402Sru	amdv_vminit,
168114402Sru	amdv_vmrun,
169114402Sru	amdv_vmcleanup,
170114402Sru	amdv_getreg,
171114402Sru	amdv_setreg,
172114402Sru	amdv_getdesc,
173114402Sru	amdv_setdesc,
174114402Sru	amdv_getcap,
175114402Sru	amdv_setcap,
176114402Sru	amdv_vmspace_alloc,
177114402Sru	amdv_vmspace_free,
178114402Sru	amdv_vlapic_init,
179114402Sru	amdv_vlapic_cleanup,
180114402Sru};
181114402Sru
182114402Srustatic int
183114402Sruamd_iommu_init(void)
184114402Sru{
185114402Sru
186114402Sru	printf("amd_iommu_init: not implemented\n");
187114402Sru	return (ENXIO);
188114402Sru}
189114402Sru
190114402Srustatic void
191114402Sruamd_iommu_cleanup(void)
192114402Sru{
193114402Sru
194114402Sru	printf("amd_iommu_cleanup: not implemented\n");
195114402Sru}
196114402Sru
197114402Srustatic void
198114402Sruamd_iommu_enable(void)
199114402Sru{
200114402Sru
201114402Sru	printf("amd_iommu_enable: not implemented\n");
202114402Sru}
203114402Sru
204114402Srustatic void
205114402Sruamd_iommu_disable(void)
206114402Sru{
207114402Sru
208114402Sru	printf("amd_iommu_disable: not implemented\n");
209114402Sru}
210114402Sru
211114402Srustatic void *
212114402Sruamd_iommu_create_domain(vm_paddr_t maxaddr)
213114402Sru{
214114402Sru
215114402Sru	printf("amd_iommu_create_domain: not implemented\n");
216114402Sru	return (NULL);
217114402Sru}
218114402Sru
219114402Srustatic void
220151497Sruamd_iommu_destroy_domain(void *domain)
221151497Sru{
222114402Sru
223114402Sru	printf("amd_iommu_destroy_domain: not implemented\n");
224114402Sru}
225114402Sru
226114402Srustatic uint64_t
227114402Sruamd_iommu_create_mapping(void *domain, vm_paddr_t gpa, vm_paddr_t hpa,
228114402Sru			 uint64_t len)
229114402Sru{
230151497Sru
231151497Sru	printf("amd_iommu_create_mapping: not implemented\n");
232114402Sru	return (0);
233114402Sru}
234114402Sru
235114402Srustatic uint64_t
236114402Sruamd_iommu_remove_mapping(void *domain, vm_paddr_t gpa, uint64_t len)
237114402Sru{
238114402Sru
239114402Sru	printf("amd_iommu_remove_mapping: not implemented\n");
240114402Sru	return (0);
241114402Sru}
242114402Sru
243114402Srustatic void
244114402Sruamd_iommu_add_device(void *domain, int bus, int slot, int func)
245114402Sru{
246114402Sru
247114402Sru	printf("amd_iommu_add_device: not implemented\n");
248114402Sru}
249114402Sru
250114402Srustatic void
251114402Sruamd_iommu_remove_device(void *domain, int bus, int slot, int func)
252114402Sru{
253114402Sru
254114402Sru	printf("amd_iommu_remove_device: not implemented\n");
255114402Sru}
256114402Sru
257114402Srustatic void
258114402Sruamd_iommu_invalidate_tlb(void *domain)
259114402Sru{
260114402Sru
261114402Sru	printf("amd_iommu_invalidate_tlb: not implemented\n");
262114402Sru}
263114402Sru
264114402Srustruct iommu_ops iommu_ops_amd = {
265114402Sru	amd_iommu_init,
266114402Sru	amd_iommu_cleanup,
267114402Sru	amd_iommu_enable,
268114402Sru	amd_iommu_disable,
269114402Sru	amd_iommu_create_domain,
270114402Sru	amd_iommu_destroy_domain,
271114402Sru	amd_iommu_create_mapping,
272114402Sru	amd_iommu_remove_mapping,
273114402Sru	amd_iommu_add_device,
274114402Sru	amd_iommu_remove_device,
275114402Sru	amd_iommu_invalidate_tlb,
276114402Sru};
277114402Sru