Date: Tue, 1 Mar 2005 02:19:08 -0800 From: Kris Kennaway <kris@obsecurity.org> To: sparc64@FreeBSD.org Subject: debug.mpsafevm=1 now usable Message-ID: <20050301101907.GA11640@xor.obsecurity.org>
next in thread | raw e-mail | index | archive | help
--AqsLC8rIMeq19msA Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable FYI, this seems to make debug.mpsafevm=3D1 usable for me. Very nice on a SMP machine (e.g. hrs's 12-cpu e4500 :-). Many thanks to Alan for finding and fixing this! Kris ----- Forwarded message from Alan Cox <alc@FreeBSD.org> ----- X-Original-To: kkenn@localhost Delivered-To: kkenn@localhost.obsecurity.org Delivered-To: kris@freebsd.org Delivered-To: src-committers@freebsd.org From: Alan Cox <alc@FreeBSD.org> Date: Tue, 1 Mar 2005 05:06:52 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/sparc64/sparc64 pmap.c X-FreeBSD-CVS-Branch: HEAD Precedence: bulk X-Loop: FreeBSD.ORG X-UIDL: 1:T"!knl!!KQA"!eM2"! X-Bogosity: No, tests=3Dbogofilter, spamicity=3D0.000000, version=3D0.92.8 alc 2005-03-01 05:06:52 UTC FreeBSD src repository Modified files: sys/sparc64/sparc64 pmap.c=20 Log: Use the kernel pmap's lock to guarantee that only one thread at a time is using either pmap_temp_map_1 or pmap_temp_map_2. =20 Tested by: kris@ =20 Revision Changes Path 1.146 +10 -0 src/sys/sparc64/sparc64/pmap.c http://cvsweb.FreeBSD.org/src/sys/sparc64/sparc64/pmap.c.diff?r1=3D1.145&r2= =3D1.146 | =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 | RCS file: /usr/local/www/cvsroot/FreeBSD/src/sys/sparc64/sparc64/pmap.c,v | retrieving revision 1.145 | retrieving revision 1.146 | diff -u -p -r1.145 -r1.146 | --- src/sys/sparc64/sparc64/pmap.c 2005/02/05 22:06:47 1.145 | +++ src/sys/sparc64/sparc64/pmap.c 2005/03/01 05:06:52 1.146 | @@ -39,7 +39,7 @@ | * SUCH DAMAGE. | * | * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 | - * $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/sparc64/sparc64/pmap= .c,v 1.145 2005/02/05 22:06:47 alc Exp $ | + * $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/sparc64/sparc64/pmap= .c,v 1.146 2005/03/01 05:06:52 alc Exp $ | */ | =20 | /* | @@ -1518,12 +1518,14 @@ pmap_zero_page(vm_page_t m) | cpu_block_zero((void *)va, PAGE_SIZE); | } else { | PMAP_STATS_INC(pmap_nzero_page_oc); | + PMAP_LOCK(kernel_pmap); | va =3D pmap_temp_map_1 + (m->md.color * PAGE_SIZE); | tp =3D tsb_kvtotte(va); | tp->tte_data =3D TD_V | TD_8K | TD_PA(pa) | TD_CP | TD_CV | TD_W; | tp->tte_vpn =3D TV_VPN(va, TS_8K); | cpu_block_zero((void *)va, PAGE_SIZE); | tlb_page_demap(kernel_pmap, va); | + PMAP_UNLOCK(kernel_pmap); | } | } | =20 | @@ -1548,12 +1550,14 @@ pmap_zero_page_area(vm_page_t m, int off | bzero((void *)(va + off), size); | } else { | PMAP_STATS_INC(pmap_nzero_page_area_oc); | + PMAP_LOCK(kernel_pmap); | va =3D pmap_temp_map_1 + (m->md.color * PAGE_SIZE); | tp =3D tsb_kvtotte(va); | tp->tte_data =3D TD_V | TD_8K | TD_PA(pa) | TD_CP | TD_CV | TD_W; | tp->tte_vpn =3D TV_VPN(va, TS_8K); | bzero((void *)(va + off), size); | tlb_page_demap(kernel_pmap, va); | + PMAP_UNLOCK(kernel_pmap); | } | } | =20 | @@ -1619,6 +1623,7 @@ pmap_copy_page(vm_page_t msrc, vm_page_t | PAGE_SIZE); | } else { | PMAP_STATS_INC(pmap_ncopy_page_doc); | + PMAP_LOCK(kernel_pmap); | vdst =3D pmap_temp_map_1 + (mdst->md.color * PAGE_SIZE); | tp =3D tsb_kvtotte(vdst); | tp->tte_data =3D | @@ -1627,6 +1632,7 @@ pmap_copy_page(vm_page_t msrc, vm_page_t | ascopyfrom(ASI_PHYS_USE_EC, psrc, (void *)vdst, | PAGE_SIZE); | tlb_page_demap(kernel_pmap, vdst); | + PMAP_UNLOCK(kernel_pmap); | } | } else if (mdst->md.color =3D=3D -1) { | if (msrc->md.color =3D=3D DCACHE_COLOR(psrc)) { | @@ -1636,6 +1642,7 @@ pmap_copy_page(vm_page_t msrc, vm_page_t | PAGE_SIZE); | } else { | PMAP_STATS_INC(pmap_ncopy_page_soc); | + PMAP_LOCK(kernel_pmap); | vsrc =3D pmap_temp_map_1 + (msrc->md.color * PAGE_SIZE); | tp =3D tsb_kvtotte(vsrc); | tp->tte_data =3D | @@ -1644,9 +1651,11 @@ pmap_copy_page(vm_page_t msrc, vm_page_t | ascopyto((void *)vsrc, ASI_PHYS_USE_EC, pdst, | PAGE_SIZE); | tlb_page_demap(kernel_pmap, vsrc); | + PMAP_UNLOCK(kernel_pmap); | } | } else { | PMAP_STATS_INC(pmap_ncopy_page_oc); | + PMAP_LOCK(kernel_pmap); | vdst =3D pmap_temp_map_1 + (mdst->md.color * PAGE_SIZE); | tp =3D tsb_kvtotte(vdst); | tp->tte_data =3D | @@ -1660,6 +1669,7 @@ pmap_copy_page(vm_page_t msrc, vm_page_t | cpu_block_copy((void *)vsrc, (void *)vdst, PAGE_SIZE); | tlb_page_demap(kernel_pmap, vdst); | tlb_page_demap(kernel_pmap, vsrc); | + PMAP_UNLOCK(kernel_pmap); | } | } | =20 ----- End forwarded message ----- --AqsLC8rIMeq19msA Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (FreeBSD) iD8DBQFCJEGbWry0BWjoQKURAt70AJ9/B74CHtZKmcsfjH643vRu94hXcgCeMMc4 qyh/ov/hWB8p2Vg489NyQJM= =fvTK -----END PGP SIGNATURE----- --AqsLC8rIMeq19msA--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050301101907.GA11640>