From owner-svn-soc-all@freebsd.org Tue Jul 14 11:50:31 2015 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CE75999CEC3 for ; Tue, 14 Jul 2015 11:50:31 +0000 (UTC) (envelope-from mihai@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B604C19E for ; Tue, 14 Jul 2015 11:50:31 +0000 (UTC) (envelope-from mihai@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id t6EBoVVF040291 for ; Tue, 14 Jul 2015 11:50:31 GMT (envelope-from mihai@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id t6EBoUI9040286 for svn-soc-all@FreeBSD.org; Tue, 14 Jul 2015 11:50:30 GMT (envelope-from mihai@FreeBSD.org) Date: Tue, 14 Jul 2015 11:50:30 GMT Message-Id: <201507141150.t6EBoUI9040286@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to mihai@FreeBSD.org using -f From: mihai@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r288372 - in soc2015/mihai/bhyve-on-arm-head: sys/arm/vmm usr.sbin/bhyveloadarm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jul 2015 11:50:32 -0000 Author: mihai Date: Tue Jul 14 11:50:29 2015 New Revision: 288372 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=288372 Log: soc2015: mihai: bhyve: sys: arm: vmm: vmm.c: fix set_registers functions Modified: soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm.c soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm_dev.c soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c Modified: soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm.c ============================================================================== --- soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm.c Tue Jul 14 11:47:13 2015 (r288371) +++ soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm.c Tue Jul 14 11:50:29 2015 (r288372) @@ -46,7 +46,7 @@ int vcpuid; void *stats; struct vm_exit exitinfo; - uint64_t nextrip; /* (x) next instruction to execute */ + uint64_t nextpc; /* (x) next instruction to execute */ }; #define vcpu_lock_initialized(v) mtx_initialized(&((v)->mtx)) @@ -86,8 +86,8 @@ #define VMM_CLEANUP() (ops != NULL ? (*ops->cleanup)() : 0) #define VMINIT(vm) (ops != NULL ? (*ops->vminit)(vm, NULL): NULL) -#define VMRUN(vmi, vcpu, rip, pmap, rptr, sptr) \ - (ops != NULL ? (*ops->vmrun)(vmi, vcpu, rip, pmap, rptr, sptr) : ENXIO) +#define VMRUN(vmi, vcpu, pc, pmap, rptr, sptr) \ + (ops != NULL ? (*ops->vmrun)(vmi, vcpu, pc, pmap, rptr, sptr) : ENXIO) #define VMCLEANUP(vmi) (ops != NULL ? (*ops->vmcleanup)(vmi) : NULL) #define VMMMAP_SET(vmi, gpa, hpa, len, prot) \ (ops != NULL ? \ @@ -262,7 +262,6 @@ void *rptr = NULL, *sptr = NULL; vcpuid = vmrun->cpuid; - if (vcpuid < 0 || vcpuid >= VM_MAXCPU) return (EINVAL); @@ -271,11 +270,15 @@ vcpu = &vm->vcpu[vcpuid]; vme = &vcpu->exitinfo; + + printf("%s vcpuid: %d, nextpc: %llx\n",__func__, vcpuid, vcpu->nextpc); + restart: critical_enter(); - error = VMRUN(vm->cookie, vcpuid, vcpu->nextrip, NULL, rptr, sptr); + error = VMRUN(vm->cookie, vcpuid, vcpu->nextpc, NULL, rptr, sptr); + printf("%s VMRUN error: %d\n",__func__, error); critical_exit(); @@ -289,9 +292,11 @@ if (error == 0 && retu == false) goto restart; - + printf("%s before bhcopy\n",__func__); /* copy the exit information */ bcopy(vme, &vmrun->vm_exit, sizeof(struct vm_exit)); + printf("%s after bhcopy\n",__func__); + return (error); } @@ -468,16 +473,24 @@ } int -vm_set_register(struct vm *vm, int vcpu, int reg, uint64_t val) +vm_set_register(struct vm *vm, int vcpuid, int reg, uint64_t val) { + struct vcpu *vcpu; + int error; - if (vcpu < 0 || vcpu >= VM_MAXCPU) + if (vcpuid < 0 || vcpuid >= VM_MAXCPU) return (EINVAL); if (reg >= VM_REG_LAST) return (EINVAL); + error = (VMSETREG(vm->cookie, vcpuid, reg, val)); + if (error || reg != VM_REG_GUEST_PC) + return (error); + + vcpu = &vm->vcpu[vcpuid]; + vcpu->nextpc = val; - return (VMSETREG(vm->cookie, vcpu, reg, val)); + return(0); } static void Modified: soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm_dev.c ============================================================================== --- soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm_dev.c Tue Jul 14 11:47:13 2015 (r288371) +++ soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vmm_dev.c Tue Jul 14 11:50:29 2015 (r288372) @@ -142,6 +142,7 @@ case VM_RUN: vmrun = (struct vm_run *)data; error = vm_run(sc->vm, vmrun); + printf("%s VM_RUN returned error: %d\n", __func__, error); break; case VM_MAP_MEMORY: seg = (struct vm_memory_segment *)data; Modified: soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c ============================================================================== --- soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c Tue Jul 14 11:47:13 2015 (r288371) +++ soc2015/mihai/bhyve-on-arm-head/usr.sbin/bhyveloadarm/bhyveloadarm.c Tue Jul 14 11:50:29 2015 (r288372) @@ -95,7 +95,6 @@ char kernel_image_name[KERNEL_IMAGE_NAME_LEN]; struct stat st; void *addr; - char test[4]; progname = basename(argv[0]);