kgdb(1) ... is it broken ?
John Baldwin
jhb at freebsd.org
Tue Feb 27 19:53:52 UTC 2007
On Tuesday 27 February 2007 05:42, Kostik Belousov wrote:
> On Mon, Feb 26, 2007 at 06:33:01PM -0500, John Baldwin wrote:
> > On Saturday 24 February 2007 05:23, Kostik Belousov wrote:
> > > On Sat, Feb 24, 2007 at 03:26:28PM +0900, Wilkinson, Alex wrote:
> > > > 0n Fri, Feb 23, 2007 at 01:34:39PM +0200, Kostik Belousov wrote:
> > > >
> > > > >BTW, you panic is caused by nvidia driver. I believe there is a
patch
> > by
> > > > >nvidia that would eliminate the problem.
> > > >
> > > > Got a link to the patch ?
> > > I do not use nvidia cards, and did not saved the link. Search in the
> > > archive.
> >
> > Try this:
> >
> > Index: kern_conf.c
> > ===================================================================
> > RCS file: /usr/cvs/src/sys/kern/kern_conf.c,v
> > retrieving revision 1.200
> > diff -u -r1.200 kern_conf.c
> > --- kern_conf.c 20 Oct 2006 07:59:50 -0000 1.200
> > +++ kern_conf.c 4 Jan 2007 20:42:07 -0000
> > @@ -843,16 +843,20 @@
> > dev_unlock();
> > return (0);
> > }
> > - if (unit == -1 && u == low) {
> > - low++;
> > - de = dev;
> > - continue;
> > - } else if (u < (unit | extra)) {
> > - de = dev;
> > - continue;
> > - } else if (u > (unit | extra)) {
> > - dl = dev;
> > - break;
> > + if (unit == -1) {
> > + if (u == low) {
> > + low++;
> > + de = dev;
> > + continue;
> > + }
> > + } else {
> > + if (u < (unit | extra)) {
> > + de = dev;
> > + continue;
> > + } else if (u > (unit | extra)) {
> > + dl = dev;
> > + break;
> > + }
> > }
> > }
> > if (unit == -1)
> >
> > --
> > John Baldwin
> This change has nothing to do with reported panic. Panic is caused by
invalid
> refcounting in nvidia driver for cdev. Nvidia is already aware of the
problem,
> and patch from them floated around.
Hmm, that's odd as this is the patch nvidia sent me many months ago for
the "dev is on clonelist" panic. I don't see how the driver could cause
clone_create() to pick a device on the clone list since clone_create() holds
the dev_lock() the whole time.
--
John Baldwin
More information about the freebsd-current
mailing list