From owner-svn-src-projects@FreeBSD.ORG Wed Jul 10 07:20:41 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id BF331BDA; Wed, 10 Jul 2013 07:20:41 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 19E671900; Wed, 10 Jul 2013 07:20:40 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id r6A7KaGc055601; Wed, 10 Jul 2013 10:20:36 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua r6A7KaGc055601 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id r6A7KaNx055600; Wed, 10 Jul 2013 10:20:36 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 10 Jul 2013 10:20:36 +0300 From: Konstantin Belousov To: Neel Natu Subject: Re: svn commit: r253135 - in projects/bhyve_npt_pmap/sys/amd64: include vmm Message-ID: <20130710072036.GY91021@kib.kiev.ua> References: <201307100712.r6A7CtsB031581@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="T0/aMKx8NezEC19d" Content-Disposition: inline In-Reply-To: <201307100712.r6A7CtsB031581@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org 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 07:20:41 -0000 --T0/aMKx8NezEC19d Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Jul 10, 2013 at 07:12:55AM +0000, Neel Natu wrote: > Author: neel > Date: Wed Jul 10 07:12:55 2013 > New Revision: 253135 > URL: http://svnweb.freebsd.org/changeset/base/253135 >=20 > Log: > Replace vm_gpa2hpa() with a pair of functions vm_gpa_hold()/vm_gpa_rele= ase(). > =20 > We guarantee that the vm_page backing the 'gpa' is not reclaimed by > the page daemon until the caller indicates that they are done using it > by calling 'vm_gpa_release()'. >=20 > Modified: > projects/bhyve_npt_pmap/sys/amd64/include/vmm.h > projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c > projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_dev.c > projects/bhyve_npt_pmap/sys/amd64/vmm/vmm_instruction_emul.c >=20 > Modified: projects/bhyve_npt_pmap/sys/amd64/include/vmm.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- projects/bhyve_npt_pmap/sys/amd64/include/vmm.h Wed Jul 10 06:46:46 2= 013 (r253134) > +++ projects/bhyve_npt_pmap/sys/amd64/include/vmm.h Wed Jul 10 07:12:55 2= 013 (r253135) > @@ -93,6 +93,9 @@ const char *vm_name(struct vm *vm); > int vm_malloc(struct vm *vm, vm_paddr_t gpa, size_t len); > int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hp= a); > int vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len); > +void *vm_gpa_hold(struct vm *, vm_paddr_t gpa, size_t len, int prot, > + void **cookie); > +void vm_gpa_release(void *cookie); > vm_paddr_t vm_gpa2hpa(struct vm *vm, vm_paddr_t gpa, size_t size); > int vm_gpabase2memseg(struct vm *vm, vm_paddr_t gpabase, > struct vm_memory_segment *seg); >=20 > Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Jul 10 06:46:46 2013 = (r253134) > +++ projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Jul 10 07:12:55 2013 = (r253135) > @@ -439,16 +439,48 @@ vm_malloc(struct vm *vm, vm_paddr_t gpa, > return (0); > } > =20 > -vm_paddr_t > -vm_gpa2hpa(struct vm *vm, vm_paddr_t gpa, size_t len) > +void * > +vm_gpa_hold(struct vm *vm, vm_paddr_t gpa, size_t len, int reqprot, > + void **cookie) > { > - vm_paddr_t nextpage; > + int rv, pageoff; > + vm_page_t m; > + struct proc *p; > + > + pageoff =3D gpa & PAGE_MASK; > + if (len > PAGE_SIZE - pageoff) > + panic("vm_gpa_hold: invalid gpa/len: 0x%016lx/%lu", gpa, len); > + > + p =3D curthread->td_proc; > + > + PROC_LOCK(p); > + p->p_lock++; > + PROC_UNLOCK(p); Why do you need to hold the process there ? I do not think that hold in the trap handler is really useful, probably the reverse. --T0/aMKx8NezEC19d Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQIcBAEBAgAGBQJR3QtDAAoJEJDCuSvBvK1BuloP/0dFkk7/lexiOW4Mq8h3Y1u0 aELW5gmHqx/hO5Ws/qF0f9a115PhriZ2AlVaYSp4Kdv0oht7zac3XenJTec4+Cet KKrImqiOkvZbwt20kpd14QtPfp5mLlZcZ/1owu50SZBjHvypQuoeNPjkj61DpAgz RhZssGcIctOwVzjIvkcfO3U3U2CbHuv1buDftRzgcePKWRJSRIfb1OUuXVpenl+7 c7R2AB/9ZgC04Ra5I1oFryOyfz0W3Kkw0ArrXNjp544Z1+6YXvg1YggLfgh1rQ5S Vr2O1hM60ESuyJYt+Io+SrTSCbfbPdz80IK1Uvep6+9EoZGkl14B2iwGvMoLLTbj vLW9afwj8RWUN67P9esGb33hwKUGuqqDijWbJaWRq5s9+8Q1hNGqaUdW2MZoNcP7 X6V4byTv/uVfYb2q2rfrw5LysSEGgpTwRiXJkkk3s+GWwWtABupXybgTo562rUyg q0T6v5peWs7r4ItmdBCG25uIBFzpmfRBK2aCCW75QTiI20d2R/2WxKkhjh/8mlKg S5ywfCQvAWoSsJ526nuBTurg2o6hbtNT5jD1KKwpOsXtxq7nYfJx4uPoGoABD6yL LxpCY4n+iFHJqVM52ObbJ4YDbmBtXy80KIOQCIbF9eXzFGXjX9+JE++E24eMT3gh kMf/uL7/rxez1+uulp59 =S5jH -----END PGP SIGNATURE----- --T0/aMKx8NezEC19d--