Skip site navigation (1)Skip section navigation (2)
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>