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