From owner-svn-src-head@FreeBSD.ORG Mon Jun 8 12:56:53 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76A3E10656C5; Mon, 8 Jun 2009 12:56:53 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from mx0.deglitch.com (backbone.deglitch.com [IPv6:2001:16d8:fffb:4::abba]) by mx1.freebsd.org (Postfix) with ESMTP id 2DFDF8FC25; Mon, 8 Jun 2009 12:56:53 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from stasss.yandex.ru (dhcp170-227-red.yandex.net [95.108.170.227]) by mx0.deglitch.com (Postfix) with ESMTPSA id 6AD058FC27; Mon, 8 Jun 2009 16:56:51 +0400 (MSD) Date: Mon, 8 Jun 2009 16:56:46 +0400 From: Stanislav Sedov To: Rafal Jaworowski Message-Id: <20090608165646.95bb577e.stas@FreeBSD.org> In-Reply-To: <200906081215.n58CFdOl029049@svn.freebsd.org> References: <200906081215.n58CFdOl029049@svn.freebsd.org> Organization: The FreeBSD Project X-Mailer: carrier-pigeon Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg="PGP-SHA1"; boundary="Signature=_Mon__8_Jun_2009_16_56_46_+0400_63+6TJOT9B58s=SZ" Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r193712 - head/sys/arm/arm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jun 2009 12:56:54 -0000 --Signature=_Mon__8_Jun_2009_16_56_46_+0400_63+6TJOT9B58s=SZ Content-Type: text/plain; charset=US-ASCII Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, 8 Jun 2009 12:15:39 +0000 (UTC) Rafal Jaworowski mentioned: > Author: raj > Date: Mon Jun 8 12:15:39 2009 > New Revision: 193712 > URL: http://svn.freebsd.org/changeset/base/193712 >=20 > Log: > Invalidate cache in pmap_remove_all() on ARM. > =20 > When pages are removed from virtual address space by calling pmap_remov= e_all() > CPU caches were not invalidated, which led to read corruption when anot= her > page got mapped at this same virtual address at later time (the CPU was > retrieving stale contents). > =20 > Submitted by: Piotr Ziecik > Obtained from: Semihalf >=20 > Modified: > head/sys/arm/arm/pmap.c >=20 > Modified: head/sys/arm/arm/pmap.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 > --- head/sys/arm/arm/pmap.c Mon Jun 8 12:10:42 2009 (r193711) > +++ head/sys/arm/arm/pmap.c Mon Jun 8 12:15:39 2009 (r193712) > @@ -3124,7 +3124,19 @@ pmap_remove_all(vm_page_t m) > if (flush =3D=3D FALSE && (pv->pv_pmap =3D=3D curpm || > pv->pv_pmap =3D=3D pmap_kernel())) > flush =3D TRUE; > + > PMAP_LOCK(pv->pv_pmap); > + /* > + * Cached contents were written-back in pmap_remove_write(), > + * but we still have to invalidate the cache entry to make > + * sure stale data are not retrieved when another page will be > + * mapped under this virtual address. > + */ > + if (pmap_is_current(pv->pv_pmap)) { > + cpu_dcache_inv_range(pv->pv_va, PAGE_SIZE); > + cpu_l2cache_inv_range(pv->pv_va, PAGE_SIZE); > + } > + Hi, Rafal! What about calling the pmap_dcache_wb_range function for each mapping in the cycle instead of calling cpu_XXX_inv_range functions directly? I think something like this would do the trick: % pmap_dcache_wb_range(pv->pv_pmap, pv->pv_va, PAGE_SIZE, FALSE, % (pv->pv_flags & PVF_WRITE) =3D=3D 0) This will also take care of the writeback cache. I don't know if it is rea= lly needed, though. --=20 Stanislav Sedov ST4096-RIPE --Signature=_Mon__8_Jun_2009_16_56_46_+0400_63+6TJOT9B58s=SZ Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- iQIcBAEBAgAGBQJKLQqTAAoJEKN82nOYvCd01lgP+wTnTAivy40PR/53O7dOtThv BOnvAKhJ+mLZbTiCdcBBMvXlSZ7CK6+wjGcvEEb2cSwz1unEhvf7aB9FL+J6zo3z lCF6jKJukA8gQUei2nRr7UfBuqiAiRr6zcQAajKMmQsfBKR4LUZaL55iXBrsR7Tu 33a9pGbAenSiQs+kSt/5dKaTb6zlWCbSx5EznNMQYsYNUl1mY6c4vvYF8UXDQACC WHQQgxQVNWWNzwKOqSQzXyeVZu6hD3CLuxnKeJy6USbfBa+gMIjrgQDdgGsl06W3 oK9NzdqVgTtOReWga/y8/tRzM1nZbQHEXXYSS6Iwd9Uf8Jf8tlHoMUP/1ja8vB5o qkF0tuEkEae5Og4sHuODDnB9TpXxRSUiiBQ+8glRQsGc6gTnuktudhcnqszUHSYn h/aDkx2waGuOgVmpLcvyfQVpU52HEw1ZxbMo0+fR/T9qkeJxRs746qYBGDuTwdER ZGNlr90gbjdv4YJuwSCxBhhK30Az4RPPdNGeIta6Y/tlU7X4M5ShLw6/Sf/QnwCI 2290bPza9V6z3en97g02YVRhnNe2ziILSIr8jxGTeqI97DAuvnQCGCdKpTsoIvHt AG1HsP845CWnNBK6b+8emXZb+NolgcmNkveGJtUICu9tT3cL6g/Zbx+B7fGmo/jO L1E2UiuyM/pv3d5JVXjM =bmU6 -----END PGP SIGNATURE----- --Signature=_Mon__8_Jun_2009_16_56_46_+0400_63+6TJOT9B58s=SZ--