From owner-svn-src-projects@FreeBSD.ORG Wed Jul 10 00:36:02 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id EAC53C4E; Wed, 10 Jul 2013 00:36:02 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id DEB3A1900; Wed, 10 Jul 2013 00:36:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6A0a2JL007042; Wed, 10 Jul 2013 00:36:02 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r6A0a2w7007041; Wed, 10 Jul 2013 00:36:02 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201307100036.r6A0a2w7007041@svn.freebsd.org> From: Neel Natu Date: Wed, 10 Jul 2013 00:36:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r253125 - projects/bhyve_npt_pmap/sys/amd64/vmm X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jul 2013 00:36:03 -0000 Author: neel Date: Wed Jul 10 00:36:02 2013 New Revision: 253125 URL: http://svnweb.freebsd.org/changeset/base/253125 Log: Delay copying the exitinfo into vm_run.vm_exit until we know that we are returning to userland. Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Jul 10 00:31:28 2013 (r253124) +++ projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Jul 10 00:36:02 2013 (r253125) @@ -680,7 +680,7 @@ vm_run(struct vm *vm, struct vm_run *vmr return (EINVAL); vcpu = &vm->vcpu[vcpuid]; - vme = &vmrun->vm_exit; + vme = &vcpu->exitinfo; rip = vmrun->rip; restart: critical_enter(); @@ -704,9 +704,6 @@ restart: vmm_stat_incr(vm, vcpuid, VCPU_TOTAL_RUNTIME, rdtsc() - tscval); - /* copy the exit information */ - bcopy(&vcpu->exitinfo, vme, sizeof(struct vm_exit)); - critical_exit(); if (error) @@ -783,12 +780,15 @@ restart: rip = vme->rip; goto restart; } else { - /* XXX */ - vme->inst_length = 0; + error = EFAULT; + goto done; } } done: + /* copy the exit information */ + bcopy(vme, &vmrun->vm_exit, sizeof(struct vm_exit)); + return (error); }