Date: Sun, 6 Sep 2009 19:02:47 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: "A.J. Fonz van Werven" <a.j.werven@student.utwente.nl> Cc: Thierry Herbelot <thierry.herbelot@free.fr>, stable@freebsd.org, jhb@freebsd.org Subject: Re: Panic in recent 7.2-Stable Message-ID: <20090906160247.GI47688@deviant.kiev.zoral.com.ua> In-Reply-To: <200909061537.n86FbqhP001617@satellite.xs4all.nl> References: <20090906110238.GH47688@deviant.kiev.zoral.com.ua> <200909061537.n86FbqhP001617@satellite.xs4all.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
--JIpyCmsTxyPLrmrM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Sep 06, 2009 at 05:37:52PM +0200, A.J. Fonz van Werven wrote: > Kostik Belousov wrote: >=20 > > I expect that the following patch, that is the partial merge of r194459, > > would fix it. It patches sys/vm/vm_phys.c. > >=20 > > Index: vm_phys.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 > > --- vm_phys.c (revision 194458) > > +++ vm_phys.c (revision 194459) > > @@ -382,8 +382,7 @@ > > if (pa >=3D seg->start && pa < seg->end) > > return (&seg->first_page[atop(pa - seg->start)]); > > } > > - panic("vm_phys_paddr_to_vm_page: paddr %#jx is not in any segment", > > - (uintmax_t)pa); > > + return (NULL); > > } > > =20 > > /* >=20 > Hi, >=20 > A quick grep on the file in question revealed that there are two > functions that may panic() with "page not in any segment": the > vm_phys_paddr_to_vm_page() being patched and also the next function > vm_phys_paddr_to_segind(). I'm not exactly current with the memory > management code so this may be a very stupid question, but I'll ask it > anyway: don't both functions need to be patched? vm_phys_paddr_to_segind is used during vm bootstrap, the call sequence is vm_page_startup->vm_phys_add_page->vm_phys_paddr_to_segind. vm_page_startup calls vm_phys_add_page only for pages that should not cause the mentioned panic in vm_phys_paddr_to_segind, since it iterates over the pages of the segments created by vm_phys_create_seg() in vm_phys_init(). --JIpyCmsTxyPLrmrM Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkqj3ScACgkQC3+MBN1Mb4hIGwCgjkEX3RwkuNVhXEND/x0X13AL CSsAnRVAkUd1fePCxcyMFvbs+X+baH2b =WwRo -----END PGP SIGNATURE----- --JIpyCmsTxyPLrmrM--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090906160247.GI47688>