Deleted Added
full compact
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 ---