Date: Wed, 10 Jul 2013 10:20:36 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Neel Natu <neel@FreeBSD.org> Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r253135 - in projects/bhyve_npt_pmap/sys/amd64: include vmm Message-ID: <20130710072036.GY91021@kib.kiev.ua> In-Reply-To: <201307100712.r6A7CtsB031581@svn.freebsd.org> References: <201307100712.r6A7CtsB031581@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--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--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130710072036.GY91021>