From owner-svn-src-projects@FreeBSD.ORG Mon Jul 8 19:19:30 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 2D7C5296; Mon, 8 Jul 2013 19:19:30 +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 1FA141360; Mon, 8 Jul 2013 19:19:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r68JJTdK085319; Mon, 8 Jul 2013 19:19:29 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r68JJTPg085315; Mon, 8 Jul 2013 19:19:29 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201307081919.r68JJTPg085315@svn.freebsd.org> From: Neel Natu Date: Mon, 8 Jul 2013 19:19:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r253043 - in projects/bhyve_npt_pmap/sys/amd64: include 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: Mon, 08 Jul 2013 19:19:30 -0000 Author: neel Date: Mon Jul 8 19:19:29 2013 New Revision: 253043 URL: http://svnweb.freebsd.org/changeset/base/253043 Log: Require that the 'struct vie' be initialized before fetching and decoding the instruction. Modified: projects/bhyve_npt_pmap/sys/amd64/include/vmm_instruction_emul.h projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_instruction_emul.c Modified: projects/bhyve_npt_pmap/sys/amd64/include/vmm_instruction_emul.h ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/include/vmm_instruction_emul.h Mon Jul 8 17:57:11 2013 (r253042) +++ projects/bhyve_npt_pmap/sys/amd64/include/vmm_instruction_emul.h Mon Jul 8 19:19:29 2013 (r253043) @@ -102,11 +102,15 @@ int vmm_emulate_instruction(void *vm, in #ifdef _KERNEL /* * APIs to fetch and decode the instruction from nested page fault handler. + * + * 'vie' must be initialized before calling 'vmm_fetch_instruction()' */ int vmm_fetch_instruction(struct vm *vm, int cpuid, uint64_t rip, int inst_length, uint64_t cr3, struct vie *vie); +void vie_init(struct vie *vie); + /* * Decode the instruction fetched into 'vie' so it can be emulated. * Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_instruction_emul.c ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_instruction_emul.c Mon Jul 8 17:57:11 2013 (r253042) +++ projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_instruction_emul.c Mon Jul 8 19:19:29 2013 (r253043) @@ -399,7 +399,7 @@ vmm_emulate_instruction(void *vm, int vc } #ifdef _KERNEL -static void +void vie_init(struct vie *vie) { @@ -474,8 +474,6 @@ vmm_fetch_instruction(struct vm *vm, int if (inst_length > VIE_INST_SIZE) panic("vmm_fetch_instruction: invalid length %d", inst_length); - vie_init(vie); - /* Copy the instruction into 'vie' */ while (vie->num_valid < inst_length) { err = gla2gpa(vm, rip, cr3, &gpa, &gpaend);