Date: Thu, 5 Oct 2006 22:34:25 -0400 From: Kris Kennaway <kris@obsecurity.org> To: Kris Kennaway <kris@obsecurity.org> Cc: freebsd-stable@freebsd.org Subject: Patch available for shared em interrupts (Re: em, bge, network problems survey.) Message-ID: <20061006023424.GA86250@xor.obsecurity.org> In-Reply-To: <20061005200552.GA80162@xor.obsecurity.org> References: <45244053.6030706@samsco.org> <20061005200552.GA80162@xor.obsecurity.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Thu, Oct 05, 2006 at 04:05:52PM -0400, Kris Kennaway wrote:
> On Wed, Oct 04, 2006 at 05:14:27PM -0600, Scott Long wrote:
> > All,
> >
> > I'm seeing some patterns here with all of the network driver problem
> > reports, but I need more information to help narrow it down further.
> > I ask all of you who are having problems to take a minute to fill
> > out this survey and return it to Kris Kennaway (on cc:) and myself.
> > Thanks.
> >
> > 1. Are you experiencing network hangs and/or "timeout" messages on the
> > console? If yes, please provide a _brief_ description of the problem.
>
> OK, next question, to all em users:
>
> If your em device is using a shared interrupt, and you are NOT
> experiencing timeout problems when using this device, please let me
> know:
Based on successful testing on a machine with shared em interrupt, the
following patch should work around the problem *in that case*.
Note that this patch will not help you if you are not using the em
driver, or if you are seeing the problem with non-shared em interrupt
(I have investigated on such outlier, which seems to be a problem with
a particular model of em hardware and not a generic problem with the
driver).
Index: if_em.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/em/if_em.c,v
retrieving revision 1.65.2.18
diff -u -u -r1.65.2.18 if_em.c
--- if_em.c 25 Aug 2006 12:38:26 -0000 1.65.2.18
+++ if_em.c 5 Oct 2006 22:05:45 -0000
@@ -2086,7 +2086,7 @@
taskqueue_start_threads(&adapter->tq, 1, PI_NET, "%s taskq",
device_get_nameunit(adapter->dev));
if ((error = bus_setup_intr(dev, adapter->res_interrupt,
- INTR_TYPE_NET | INTR_FAST, em_intr_fast, adapter,
+ INTR_TYPE_NET | INTR_MPSAFE, em_intr_fast, adapter,
&adapter->int_handler_tag)) != 0) {
device_printf(dev, "Failed to register fast interrupt "
"handler: %d\n", error);
Please let Scott and I know whether or not this patch works for you
(in addition to the information previously requested, if you have not
already sent it). Unfortunately it is only a workaround, but it
points to an underlying problem with fast interrupt handlers on a
shared irq that can be studied separately.
Kris
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (FreeBSD)
iD8DBQFFJcCwWry0BWjoQKURAqdUAKD5wCARFFNMFy7tQNO22XldopTwzwCg9iBy
QJ5EU/dyeUHV6D9244eeYtc=
=Bq3a
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061006023424.GA86250>
