vmm_dev.c (245678) | vmm_dev.c (246686) |
---|---|
1/*- 2 * Copyright (c) 2011 NetApp, Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2011 NetApp, Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/amd64/vmm/vmm_dev.c 245678 2013-01-20 03:42:49Z neel $ | 26 * $FreeBSD: head/sys/amd64/vmm/vmm_dev.c 246686 2013-02-11 20:36:07Z neel $ |
27 */ 28 29#include <sys/cdefs.h> | 27 */ 28 29#include <sys/cdefs.h> |
30__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm_dev.c 245678 2013-01-20 03:42:49Z neel $"); | 30__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm_dev.c 246686 2013-02-11 20:36:07Z neel $"); |
31 32#include <sys/param.h> 33#include <sys/kernel.h> 34#include <sys/queue.h> 35#include <sys/lock.h> 36#include <sys/mutex.h> 37#include <sys/malloc.h> 38#include <sys/conf.h> --- 100 unchanged lines hidden (view full) --- 139 struct thread *td) 140{ 141 int error, vcpu, state_changed; 142 enum vcpu_state new_state; 143 struct vmmdev_softc *sc; 144 struct vm_memory_segment *seg; 145 struct vm_register *vmreg; 146 struct vm_seg_desc* vmsegdesc; | 31 32#include <sys/param.h> 33#include <sys/kernel.h> 34#include <sys/queue.h> 35#include <sys/lock.h> 36#include <sys/mutex.h> 37#include <sys/malloc.h> 38#include <sys/conf.h> --- 100 unchanged lines hidden (view full) --- 139 struct thread *td) 140{ 141 int error, vcpu, state_changed; 142 enum vcpu_state new_state; 143 struct vmmdev_softc *sc; 144 struct vm_memory_segment *seg; 145 struct vm_register *vmreg; 146 struct vm_seg_desc* vmsegdesc; |
147 struct vm_pin *vmpin; | |
148 struct vm_run *vmrun; 149 struct vm_event *vmevent; 150 struct vm_lapic_irq *vmirq; 151 struct vm_capability *vmcap; 152 struct vm_pptdev *pptdev; 153 struct vm_pptdev_mmio *pptmmio; 154 struct vm_pptdev_msi *pptmsi; 155 struct vm_pptdev_msix *pptmsix; --- 9 unchanged lines hidden (view full) --- 165 vcpu = -1; 166 state_changed = 0; 167 168 /* 169 * Some VMM ioctls can operate only on vcpus that are not running. 170 */ 171 switch (cmd) { 172 case VM_RUN: | 147 struct vm_run *vmrun; 148 struct vm_event *vmevent; 149 struct vm_lapic_irq *vmirq; 150 struct vm_capability *vmcap; 151 struct vm_pptdev *pptdev; 152 struct vm_pptdev_mmio *pptmmio; 153 struct vm_pptdev_msi *pptmsi; 154 struct vm_pptdev_msix *pptmsix; --- 9 unchanged lines hidden (view full) --- 164 vcpu = -1; 165 state_changed = 0; 166 167 /* 168 * Some VMM ioctls can operate only on vcpus that are not running. 169 */ 170 switch (cmd) { 171 case VM_RUN: |
173 case VM_SET_PINNING: | |
174 case VM_GET_REGISTER: 175 case VM_SET_REGISTER: 176 case VM_GET_SEGMENT_DESCRIPTOR: 177 case VM_SET_SEGMENT_DESCRIPTOR: 178 case VM_INJECT_EVENT: 179 case VM_GET_CAPABILITY: 180 case VM_SET_CAPABILITY: 181 case VM_PPTDEV_MSI: --- 114 unchanged lines hidden (view full) --- 296 case VM_INJECT_NMI: 297 vmnmi = (struct vm_nmi *)data; 298 error = vm_inject_nmi(sc->vm, vmnmi->cpuid); 299 break; 300 case VM_LAPIC_IRQ: 301 vmirq = (struct vm_lapic_irq *)data; 302 error = lapic_set_intr(sc->vm, vmirq->cpuid, vmirq->vector); 303 break; | 172 case VM_GET_REGISTER: 173 case VM_SET_REGISTER: 174 case VM_GET_SEGMENT_DESCRIPTOR: 175 case VM_SET_SEGMENT_DESCRIPTOR: 176 case VM_INJECT_EVENT: 177 case VM_GET_CAPABILITY: 178 case VM_SET_CAPABILITY: 179 case VM_PPTDEV_MSI: --- 114 unchanged lines hidden (view full) --- 294 case VM_INJECT_NMI: 295 vmnmi = (struct vm_nmi *)data; 296 error = vm_inject_nmi(sc->vm, vmnmi->cpuid); 297 break; 298 case VM_LAPIC_IRQ: 299 vmirq = (struct vm_lapic_irq *)data; 300 error = lapic_set_intr(sc->vm, vmirq->cpuid, vmirq->vector); 301 break; |
304 case VM_SET_PINNING: 305 vmpin = (struct vm_pin *)data; 306 error = vm_set_pinning(sc->vm, vmpin->vm_cpuid, 307 vmpin->host_cpuid); 308 break; 309 case VM_GET_PINNING: 310 vmpin = (struct vm_pin *)data; 311 error = vm_get_pinning(sc->vm, vmpin->vm_cpuid, 312 &vmpin->host_cpuid); 313 break; | |
314 case VM_MAP_MEMORY: 315 seg = (struct vm_memory_segment *)data; 316 error = vm_malloc(sc->vm, seg->gpa, seg->len); 317 break; 318 case VM_GET_MEMORY_SEG: 319 seg = (struct vm_memory_segment *)data; 320 seg->len = 0; 321 (void)vm_gpabase2memseg(sc->vm, seg->gpa, seg); --- 217 unchanged lines hidden --- | 302 case VM_MAP_MEMORY: 303 seg = (struct vm_memory_segment *)data; 304 error = vm_malloc(sc->vm, seg->gpa, seg->len); 305 break; 306 case VM_GET_MEMORY_SEG: 307 seg = (struct vm_memory_segment *)data; 308 seg->len = 0; 309 (void)vm_gpabase2memseg(sc->vm, seg->gpa, seg); --- 217 unchanged lines hidden --- |