vmm.c (266524) | vmm.c (266573) |
---|---|
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.c 266524 2014-05-22 03:14:54Z neel $ | 26 * $FreeBSD: head/sys/amd64/vmm/vmm.c 266573 2014-05-23 05:15:17Z neel $ |
27 */ 28 29#include <sys/cdefs.h> | 27 */ 28 29#include <sys/cdefs.h> |
30__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm.c 266524 2014-05-22 03:14:54Z neel $"); | 30__FBSDID("$FreeBSD: head/sys/amd64/vmm/vmm.c 266573 2014-05-23 05:15:17Z neel $"); |
31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/kernel.h> 35#include <sys/module.h> 36#include <sys/sysctl.h> 37#include <sys/malloc.h> 38#include <sys/pcpu.h> --- 19 unchanged lines hidden (view full) --- 58#include <machine/smp.h> 59#include <x86/psl.h> 60#include <x86/apicreg.h> 61#include <machine/vmparam.h> 62 63#include <machine/vmm.h> 64#include <machine/vmm_dev.h> 65 | 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/kernel.h> 35#include <sys/module.h> 36#include <sys/sysctl.h> 37#include <sys/malloc.h> 38#include <sys/pcpu.h> --- 19 unchanged lines hidden (view full) --- 58#include <machine/smp.h> 59#include <x86/psl.h> 60#include <x86/apicreg.h> 61#include <machine/vmparam.h> 62 63#include <machine/vmm.h> 64#include <machine/vmm_dev.h> 65 |
66#include "vmm_ioport.h" |
|
66#include "vmm_ktr.h" 67#include "vmm_host.h" 68#include "vmm_mem.h" 69#include "vmm_util.h" 70#include "vatpic.h" 71#include "vatpit.h" 72#include "vhpet.h" 73#include "vioapic.h" --- 1275 unchanged lines hidden (view full) --- 1349 error = vm_handle_hlt(vm, vcpuid, intr_disabled, &retu); 1350 break; 1351 case VM_EXITCODE_PAGING: 1352 error = vm_handle_paging(vm, vcpuid, &retu); 1353 break; 1354 case VM_EXITCODE_INST_EMUL: 1355 error = vm_handle_inst_emul(vm, vcpuid, &retu); 1356 break; | 67#include "vmm_ktr.h" 68#include "vmm_host.h" 69#include "vmm_mem.h" 70#include "vmm_util.h" 71#include "vatpic.h" 72#include "vatpit.h" 73#include "vhpet.h" 74#include "vioapic.h" --- 1275 unchanged lines hidden (view full) --- 1350 error = vm_handle_hlt(vm, vcpuid, intr_disabled, &retu); 1351 break; 1352 case VM_EXITCODE_PAGING: 1353 error = vm_handle_paging(vm, vcpuid, &retu); 1354 break; 1355 case VM_EXITCODE_INST_EMUL: 1356 error = vm_handle_inst_emul(vm, vcpuid, &retu); 1357 break; |
1358 case VM_EXITCODE_INOUT: 1359 case VM_EXITCODE_INOUT_STR: 1360 error = vm_handle_inout(vm, vcpuid, vme, &retu); 1361 break; |
|
1357 default: 1358 retu = true; /* handled in userland */ 1359 break; 1360 } 1361 } 1362 1363 if (error == 0 && retu == false) { 1364 rip = vme->rip + vme->inst_length; --- 504 unchanged lines hidden (view full) --- 1869 return (vm->vatpic); 1870} 1871 1872struct vatpit * 1873vm_atpit(struct vm *vm) 1874{ 1875 return (vm->vatpit); 1876} | 1362 default: 1363 retu = true; /* handled in userland */ 1364 break; 1365 } 1366 } 1367 1368 if (error == 0 && retu == false) { 1369 rip = vme->rip + vme->inst_length; --- 504 unchanged lines hidden (view full) --- 1874 return (vm->vatpic); 1875} 1876 1877struct vatpit * 1878vm_atpit(struct vm *vm) 1879{ 1880 return (vm->vatpit); 1881} |
1882 1883enum vm_reg_name 1884vm_segment_name(int seg) 1885{ 1886 static enum vm_reg_name seg_names[] = { 1887 VM_REG_GUEST_ES, 1888 VM_REG_GUEST_CS, 1889 VM_REG_GUEST_SS, 1890 VM_REG_GUEST_DS, 1891 VM_REG_GUEST_FS, 1892 VM_REG_GUEST_GS 1893 }; 1894 1895 KASSERT(seg >= 0 && seg < nitems(seg_names), 1896 ("%s: invalid segment encoding %d", __func__, seg)); 1897 return (seg_names[seg]); 1898} |
|