Date: Thu, 18 Dec 2008 01:20:03 GMT From: Sean Bruno <sbruno@miralink.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/118093: firewire bus reset hogs CPU, causing data to be lost Message-ID: <200812180120.mBI1K3Ye048523@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/118093; it has been noted by GNATS. From: Sean Bruno <sbruno@miralink.com> To: "M. Warner Losh" <imp@bsdimp.com> Cc: freebsd@sopwith.solgatos.com, freebsd-firewire@freebsd.org, bug-followup@freebsd.org Subject: Re: kern/118093: firewire bus reset hogs CPU, causing data to be lost Date: Wed, 17 Dec 2008 17:10:53 -0800 M. Warner Losh wrote: > In message: <200812170329.DAA17848@sopwith.solgatos.com> > Dieter <freebsd@sopwith.solgatos.com> writes: > : Sean> Which file in dev/firewire are you looking at? > : > : fwohci.c and firewire.c > : > : examples: > : > : printf("non CYCLEMASTER mode\n"); > : > : device_printf(fc->dev, "Initiate bus reset\n"); > : > : ------------------- > : > : Warner> This can't be the case. There's no SPL involved at all. Maybe > : Warner> removing the printfs causes an interrupt to be serviced faster, > : Warner> resulting in what appears to be better performance... > : > : With the printfs, Ethernet is not getting serviced. This > : is repeatable and easily reproduced. Without the printfs, > : it seems ok. > : > : If it isn't spl, what is locking out Ethernet? > > interrupt storm? In old-spl-locked drivers, often times the interrupt > would be masked while certain operations happened. In new > mutex-locked freebsd, there's no way to block the interrupts, so > sometimes old code gets into an interrupt storm, which starves other > things. Not sure why printf would trigger this, however... > > Warner > _______________________________________________ > freebsd-drivers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-drivers > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@freebsd.org" > Let me take a stab at this one this week. There's got to be something more going on than a printf() causing hell. It could be a mutex being held causing nightmares. The firewire code is my current project, I'll look at this issue now. Sean
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812180120.mBI1K3Ye048523>