Deleted Added
full compact
bhyverun.c (253181) bhyverun.c (253452)
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/bhyve/bhyverun.c 253181 2013-07-11 03:54:35Z grehan $
26 * $FreeBSD: head/usr.sbin/bhyve/bhyverun.c 253452 2013-07-18 18:40:54Z grehan $
27 */
28
29#include <sys/cdefs.h>
27 */
28
29#include <sys/cdefs.h>
30__FBSDID("$FreeBSD: head/usr.sbin/bhyve/bhyverun.c 253181 2013-07-11 03:54:35Z grehan $");
30__FBSDID("$FreeBSD: head/usr.sbin/bhyve/bhyverun.c 253452 2013-07-18 18:40:54Z grehan $");
31
32#include <sys/types.h>
33#include <sys/mman.h>
34#include <sys/time.h>
35
36#include <machine/segments.h>
37
38#include <stdio.h>

--- 465 unchanged lines hidden (view full) ---

504 [VM_EXITCODE_SPINUP_AP] = vmexit_spinup_ap,
505};
506
507static void
508vm_loop(struct vmctx *ctx, int vcpu, uint64_t rip)
509{
510 cpuset_t mask;
511 int error, rc, prevcpu;
31
32#include <sys/types.h>
33#include <sys/mman.h>
34#include <sys/time.h>
35
36#include <machine/segments.h>
37
38#include <stdio.h>

--- 465 unchanged lines hidden (view full) ---

504 [VM_EXITCODE_SPINUP_AP] = vmexit_spinup_ap,
505};
506
507static void
508vm_loop(struct vmctx *ctx, int vcpu, uint64_t rip)
509{
510 cpuset_t mask;
511 int error, rc, prevcpu;
512 enum vm_exitcode exitcode;
512
513 if (guest_vcpu_mux)
514 setup_timeslice();
515
516 if (pincpu >= 0) {
517 CPU_ZERO(&mask);
518 CPU_SET(pincpu + vcpu, &mask);
519 error = pthread_setaffinity_np(pthread_self(),

--- 13 unchanged lines hidden (view full) ---

533 */
534 if (errno == EBUSY)
535 continue;
536 else
537 break;
538 }
539
540 prevcpu = vcpu;
513
514 if (guest_vcpu_mux)
515 setup_timeslice();
516
517 if (pincpu >= 0) {
518 CPU_ZERO(&mask);
519 CPU_SET(pincpu + vcpu, &mask);
520 error = pthread_setaffinity_np(pthread_self(),

--- 13 unchanged lines hidden (view full) ---

534 */
535 if (errno == EBUSY)
536 continue;
537 else
538 break;
539 }
540
541 prevcpu = vcpu;
541 rc = (*handler[vmexit[vcpu].exitcode])(ctx, &vmexit[vcpu],
542 &vcpu);
542
543 exitcode = vmexit[vcpu].exitcode;
544 if (exitcode >= VM_EXITCODE_MAX || handler[exitcode] == NULL) {
545 fprintf(stderr, "vm_loop: unexpected exitcode 0x%x\n",
546 exitcode);
547 exit(1);
548 }
549
550 rc = (*handler[exitcode])(ctx, &vmexit[vcpu], &vcpu);
551
543 switch (rc) {
544 case VMEXIT_SWITCH:
545 assert(guest_vcpu_mux);
546 if (vcpu == -1) {
547 stats.cpu_switch_rotate++;
548 vcpu = fbsdrun_get_next_cpu(prevcpu);
549 } else {
550 stats.cpu_switch_direct++;

--- 235 unchanged lines hidden ---
552 switch (rc) {
553 case VMEXIT_SWITCH:
554 assert(guest_vcpu_mux);
555 if (vcpu == -1) {
556 stats.cpu_switch_rotate++;
557 vcpu = fbsdrun_get_next_cpu(prevcpu);
558 } else {
559 stats.cpu_switch_direct++;

--- 235 unchanged lines hidden ---