bhyvectl.c (245685) | bhyvectl.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/usr.sbin/bhyvectl/bhyvectl.c 245685 2013-01-20 08:18:56Z joel $ | 26 * $FreeBSD: head/usr.sbin/bhyvectl/bhyvectl.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/usr.sbin/bhyvectl/bhyvectl.c 245685 2013-01-20 08:18:56Z joel $"); | 30__FBSDID("$FreeBSD: head/usr.sbin/bhyvectl/bhyvectl.c 246686 2013-02-11 20:36:07Z neel $"); |
31 32#include <sys/param.h> 33#include <sys/types.h> 34#include <sys/sysctl.h> 35#include <sys/errno.h> 36#include <sys/mman.h> 37 38#include <stdio.h> --- 139 unchanged lines hidden (view full) --- 178 " [--get-vmcs-entry-ctls]\n" 179 " [--get-vmcs-guest-sysenter]\n" 180 " [--get-vmcs-link]\n" 181 " [--get-vmcs-exit-reason]\n" 182 " [--get-vmcs-exit-qualification]\n" 183 " [--get-vmcs-exit-interruption-info]\n" 184 " [--get-vmcs-exit-interruption-error]\n" 185 " [--get-vmcs-interruptibility]\n" | 31 32#include <sys/param.h> 33#include <sys/types.h> 34#include <sys/sysctl.h> 35#include <sys/errno.h> 36#include <sys/mman.h> 37 38#include <stdio.h> --- 139 unchanged lines hidden (view full) --- 178 " [--get-vmcs-entry-ctls]\n" 179 " [--get-vmcs-guest-sysenter]\n" 180 " [--get-vmcs-link]\n" 181 " [--get-vmcs-exit-reason]\n" 182 " [--get-vmcs-exit-qualification]\n" 183 " [--get-vmcs-exit-interruption-info]\n" 184 " [--get-vmcs-exit-interruption-error]\n" 185 " [--get-vmcs-interruptibility]\n" |
186 " [--set-pinning=<host_cpuid>]\n" 187 " [--get-pinning]\n" | |
188 " [--set-x2apic-state=<state>]\n" 189 " [--get-x2apic-state]\n" 190 " [--set-lowmem=<memory below 4GB in units of MB>]\n" 191 " [--get-lowmem]\n" 192 " [--set-highmem=<memory above 4GB in units of MB>]\n" 193 " [--get-highmem]\n", 194 progname); 195 exit(1); --- 17 unchanged lines hidden (view full) --- 213static int set_desc_cs, get_desc_cs; 214static int set_desc_ss, get_desc_ss; 215static int set_desc_gdtr, get_desc_gdtr; 216static int set_desc_idtr, get_desc_idtr; 217static int set_desc_tr, get_desc_tr; 218static int set_desc_ldtr, get_desc_ldtr; 219static int set_cs, set_ds, set_es, set_fs, set_gs, set_ss, set_tr, set_ldtr; 220static int get_cs, get_ds, get_es, get_fs, get_gs, get_ss, get_tr, get_ldtr; | 186 " [--set-x2apic-state=<state>]\n" 187 " [--get-x2apic-state]\n" 188 " [--set-lowmem=<memory below 4GB in units of MB>]\n" 189 " [--get-lowmem]\n" 190 " [--set-highmem=<memory above 4GB in units of MB>]\n" 191 " [--get-highmem]\n", 192 progname); 193 exit(1); --- 17 unchanged lines hidden (view full) --- 211static int set_desc_cs, get_desc_cs; 212static int set_desc_ss, get_desc_ss; 213static int set_desc_gdtr, get_desc_gdtr; 214static int set_desc_idtr, get_desc_idtr; 215static int set_desc_tr, get_desc_tr; 216static int set_desc_ldtr, get_desc_ldtr; 217static int set_cs, set_ds, set_es, set_fs, set_gs, set_ss, set_tr, set_ldtr; 218static int get_cs, get_ds, get_es, get_fs, get_gs, get_ss, get_tr, get_ldtr; |
221static int set_pinning, get_pinning, pincpu; | |
222static int set_x2apic_state, get_x2apic_state; 223enum x2apic_state x2apic_state; 224static int run; 225 226/* 227 * VMCS-specific fields 228 */ 229static int get_pinbased_ctls, get_procbased_ctls, get_procbased_ctls2; --- 139 unchanged lines hidden (view full) --- 369 SET_CS, 370 SET_DS, 371 SET_ES, 372 SET_FS, 373 SET_GS, 374 SET_SS, 375 SET_TR, 376 SET_LDTR, | 219static int set_x2apic_state, get_x2apic_state; 220enum x2apic_state x2apic_state; 221static int run; 222 223/* 224 * VMCS-specific fields 225 */ 226static int get_pinbased_ctls, get_procbased_ctls, get_procbased_ctls2; --- 139 unchanged lines hidden (view full) --- 366 SET_CS, 367 SET_DS, 368 SET_ES, 369 SET_FS, 370 SET_GS, 371 SET_SS, 372 SET_TR, 373 SET_LDTR, |
377 SET_PINNING, | |
378 SET_X2APIC_STATE, 379 SET_VMCS_EXCEPTION_BITMAP, 380 SET_VMCS_ENTRY_INTERRUPTION_INFO, 381 SET_CAP, 382 CAPNAME, 383}; 384 385int --- 32 unchanged lines hidden (view full) --- 418 { "set-cs", REQ_ARG, 0, SET_CS }, 419 { "set-ds", REQ_ARG, 0, SET_DS }, 420 { "set-es", REQ_ARG, 0, SET_ES }, 421 { "set-fs", REQ_ARG, 0, SET_FS }, 422 { "set-gs", REQ_ARG, 0, SET_GS }, 423 { "set-ss", REQ_ARG, 0, SET_SS }, 424 { "set-tr", REQ_ARG, 0, SET_TR }, 425 { "set-ldtr", REQ_ARG, 0, SET_LDTR }, | 374 SET_X2APIC_STATE, 375 SET_VMCS_EXCEPTION_BITMAP, 376 SET_VMCS_ENTRY_INTERRUPTION_INFO, 377 SET_CAP, 378 CAPNAME, 379}; 380 381int --- 32 unchanged lines hidden (view full) --- 414 { "set-cs", REQ_ARG, 0, SET_CS }, 415 { "set-ds", REQ_ARG, 0, SET_DS }, 416 { "set-es", REQ_ARG, 0, SET_ES }, 417 { "set-fs", REQ_ARG, 0, SET_FS }, 418 { "set-gs", REQ_ARG, 0, SET_GS }, 419 { "set-ss", REQ_ARG, 0, SET_SS }, 420 { "set-tr", REQ_ARG, 0, SET_TR }, 421 { "set-ldtr", REQ_ARG, 0, SET_LDTR }, |
426 { "set-pinning",REQ_ARG, 0, SET_PINNING }, | |
427 { "set-x2apic-state",REQ_ARG, 0, SET_X2APIC_STATE }, 428 { "set-vmcs-exception-bitmap", 429 REQ_ARG, 0, SET_VMCS_EXCEPTION_BITMAP }, 430 { "set-vmcs-entry-interruption-info", 431 REQ_ARG, 0, SET_VMCS_ENTRY_INTERRUPTION_INFO }, 432 { "capname", REQ_ARG, 0, CAPNAME }, 433 { "setcap", REQ_ARG, 0, SET_CAP }, 434 { "getcap", NO_ARG, &getcap, 1 }, --- 112 unchanged lines hidden (view full) --- 547 { "get-vmcs-exit-qualification", 548 NO_ARG, &get_vmcs_exit_qualification, 1 }, 549 { "get-vmcs-exit-interruption-info", 550 NO_ARG, &get_vmcs_exit_interruption_info, 1}, 551 { "get-vmcs-exit-interruption-error", 552 NO_ARG, &get_vmcs_exit_interruption_error, 1}, 553 { "get-vmcs-interruptibility", 554 NO_ARG, &get_vmcs_interruptibility, 1 }, | 422 { "set-x2apic-state",REQ_ARG, 0, SET_X2APIC_STATE }, 423 { "set-vmcs-exception-bitmap", 424 REQ_ARG, 0, SET_VMCS_EXCEPTION_BITMAP }, 425 { "set-vmcs-entry-interruption-info", 426 REQ_ARG, 0, SET_VMCS_ENTRY_INTERRUPTION_INFO }, 427 { "capname", REQ_ARG, 0, CAPNAME }, 428 { "setcap", REQ_ARG, 0, SET_CAP }, 429 { "getcap", NO_ARG, &getcap, 1 }, --- 112 unchanged lines hidden (view full) --- 542 { "get-vmcs-exit-qualification", 543 NO_ARG, &get_vmcs_exit_qualification, 1 }, 544 { "get-vmcs-exit-interruption-info", 545 NO_ARG, &get_vmcs_exit_interruption_info, 1}, 546 { "get-vmcs-exit-interruption-error", 547 NO_ARG, &get_vmcs_exit_interruption_error, 1}, 548 { "get-vmcs-interruptibility", 549 NO_ARG, &get_vmcs_interruptibility, 1 }, |
555 { "get-pinning",NO_ARG, &get_pinning, 1 }, | |
556 { "get-x2apic-state",NO_ARG, &get_x2apic_state, 1 }, 557 { "get-all", NO_ARG, &get_all, 1 }, 558 { "run", NO_ARG, &run, 1 }, 559 { "create", NO_ARG, &create, 1 }, 560 { "destroy", NO_ARG, &destroy, 1 }, 561 { NULL, 0, NULL, 0 } 562 }; 563 --- 90 unchanged lines hidden (view full) --- 654 case SET_TR: 655 tr = strtoul(optarg, NULL, 0); 656 set_tr = 1; 657 break; 658 case SET_LDTR: 659 ldtr = strtoul(optarg, NULL, 0); 660 set_ldtr = 1; 661 break; | 550 { "get-x2apic-state",NO_ARG, &get_x2apic_state, 1 }, 551 { "get-all", NO_ARG, &get_all, 1 }, 552 { "run", NO_ARG, &run, 1 }, 553 { "create", NO_ARG, &create, 1 }, 554 { "destroy", NO_ARG, &destroy, 1 }, 555 { NULL, 0, NULL, 0 } 556 }; 557 --- 90 unchanged lines hidden (view full) --- 648 case SET_TR: 649 tr = strtoul(optarg, NULL, 0); 650 set_tr = 1; 651 break; 652 case SET_LDTR: 653 ldtr = strtoul(optarg, NULL, 0); 654 set_ldtr = 1; 655 break; |
662 case SET_PINNING: 663 pincpu = strtol(optarg, NULL, 0); 664 set_pinning = 1; 665 break; | |
666 case SET_X2APIC_STATE: 667 x2apic_state = strtol(optarg, NULL, 0); 668 set_x2apic_state = 1; 669 break; 670 case SET_VMCS_EXCEPTION_BITMAP: 671 exception_bitmap = strtoul(optarg, NULL, 0); 672 set_exception_bitmap = 1; 673 break; --- 133 unchanged lines hidden (view full) --- 807 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_SS, ss); 808 809 if (!error && set_tr) 810 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_TR, tr); 811 812 if (!error && set_ldtr) 813 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_LDTR, ldtr); 814 | 656 case SET_X2APIC_STATE: 657 x2apic_state = strtol(optarg, NULL, 0); 658 set_x2apic_state = 1; 659 break; 660 case SET_VMCS_EXCEPTION_BITMAP: 661 exception_bitmap = strtoul(optarg, NULL, 0); 662 set_exception_bitmap = 1; 663 break; --- 133 unchanged lines hidden (view full) --- 797 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_SS, ss); 798 799 if (!error && set_tr) 800 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_TR, tr); 801 802 if (!error && set_ldtr) 803 error = vm_set_register(ctx, vcpu, VM_REG_GUEST_LDTR, ldtr); 804 |
815 if (!error && set_pinning) 816 error = vm_set_pinning(ctx, vcpu, pincpu); 817 | |
818 if (!error && set_x2apic_state) 819 error = vm_set_x2apic_state(ctx, vcpu, x2apic_state); 820 821 if (!error && set_exception_bitmap) { 822 error = vm_set_vmcs_field(ctx, vcpu, VMCS_EXCEPTION_BITMAP, 823 exception_bitmap); 824 } 825 --- 304 unchanged lines hidden (view full) --- 1130 } 1131 1132 if (!error && (get_ldtr || get_all)) { 1133 error = vm_get_register(ctx, vcpu, VM_REG_GUEST_LDTR, &ldtr); 1134 if (error == 0) 1135 printf("ldtr[%d]\t\t0x%04lx\n", vcpu, ldtr); 1136 } 1137 | 805 if (!error && set_x2apic_state) 806 error = vm_set_x2apic_state(ctx, vcpu, x2apic_state); 807 808 if (!error && set_exception_bitmap) { 809 error = vm_set_vmcs_field(ctx, vcpu, VMCS_EXCEPTION_BITMAP, 810 exception_bitmap); 811 } 812 --- 304 unchanged lines hidden (view full) --- 1117 } 1118 1119 if (!error && (get_ldtr || get_all)) { 1120 error = vm_get_register(ctx, vcpu, VM_REG_GUEST_LDTR, &ldtr); 1121 if (error == 0) 1122 printf("ldtr[%d]\t\t0x%04lx\n", vcpu, ldtr); 1123 } 1124 |
1138 if (!error && (get_pinning || get_all)) { 1139 error = vm_get_pinning(ctx, vcpu, &pincpu); 1140 if (error == 0) { 1141 if (pincpu < 0) 1142 printf("pincpu[%d]\tunpinned\n", vcpu); 1143 else 1144 printf("pincpu[%d]\t%d\n", vcpu, pincpu); 1145 } 1146 } 1147 | |
1148 if (!error && (get_x2apic_state || get_all)) { 1149 error = vm_get_x2apic_state(ctx, vcpu, &x2apic_state); 1150 if (error == 0) 1151 printf("x2apic_state[%d]\t%d\n", vcpu, x2apic_state); 1152 } 1153 1154 if (!error && (get_pinbased_ctls || get_all)) { 1155 error = vm_get_vmcs_field(ctx, vcpu, VMCS_PIN_BASED_CTLS, &ctl); --- 369 unchanged lines hidden --- | 1125 if (!error && (get_x2apic_state || get_all)) { 1126 error = vm_get_x2apic_state(ctx, vcpu, &x2apic_state); 1127 if (error == 0) 1128 printf("x2apic_state[%d]\t%d\n", vcpu, x2apic_state); 1129 } 1130 1131 if (!error && (get_pinbased_ctls || get_all)) { 1132 error = vm_get_vmcs_field(ctx, vcpu, VMCS_PIN_BASED_CTLS, &ctl); --- 369 unchanged lines hidden --- |