Re: kgdb(1) ... is it broken ?

From: John Baldwin <jhb_at_freebsd.org>
Date: Tue, 27 Feb 2007 13:08:17 -0500
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
> > _at__at_ -843,16 +843,20 _at__at_
> >  			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
Received on Tue Feb 27 2007 - 18:53:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:06 UTC