Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Jun 2003 23:18:15 -0700 (PDT)
From:      Nate Lawson <nate@root.org>
To:        Andrea Campi <andrea@webcom.it>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/pccbb pccbb.c pccbbvar.h
Message-ID:  <20030624231534.K71390@root.org>
In-Reply-To: <20030625001613.GA636@webcom.it>
References:  <200306120337.h5C3bSmB075154@repoman.freebsd.org> <20030625001613.GA636@webcom.it>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 25 Jun 2003, Andrea Campi wrote:
> On Wed, Jun 11, 2003 at 08:37:28PM -0700, Warner Losh wrote:
> >   Make cbb interrupts MPSAFE:
> >   o Register ISR INTR_MPSAFE.
> ...
> >   Revision  Changes    Path
> >   1.76      +31 -20    src/sys/dev/pccbb/pccbb.c
> >   1.19      +3 -2      src/sys/dev/pccbb/pccbbvar.h
>
> This commit causes my ep0 to stop working after some traffic is exchanged;
> the symptoms are full buffers (e.g. dhclient: send_packet: No buffer space available)
>
> I traced the issue to this commit by dichotomic search; I also verified reverting to
> 1.78 and applying this patch is enough to get it to work again (I'm not actually sure
> all three hunks are needed).
>
> Could you look into this issue?

Um, did you cvsup to 1.78?  I found an error in the original commit where
it locks Giant twice (instead of unlocking) which would give exactly these
symptoms.

> --- pccbb.c	Thu Jun 12 05:37:28 2003
> +++ pccbb.c.fixed	Wed Jun 25 02:05:28 2003
> @@ -1087,11 +1086,7 @@
>  	}
>  	if (sc->flags & CBB_CARD_OK) {
>  		STAILQ_FOREACH(ih, &sc->intr_handlers, entries) {
> -			if ((ih->flags & INTR_MPSAFE) != 0)
> -				mtx_lock(&Giant);
>  			(*ih->intr)(ih->arg);
> -			if ((ih->flags & INTR_MPSAFE) != 0)
> -				mtx_lock(&Giant);
>  		}
>  	}
>  }

By your patch above, it looks like you were not using 1.78.

-Nate



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030624231534.K71390>