From eugen@eg.sd.rdtc.ru  Fri Feb 24 11:07:12 2012
Return-Path: <eugen@eg.sd.rdtc.ru>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A14141065670
	for <FreeBSD-gnats-submit@freebsd.org>; Fri, 24 Feb 2012 11:07:12 +0000 (UTC)
	(envelope-from eugen@eg.sd.rdtc.ru)
Received: from eg.sd.rdtc.ru (eg.sd.rdtc.ru [IPv6:2a03:3100:c:13::5])
	by mx1.freebsd.org (Postfix) with ESMTP id 05C9A8FC12
	for <FreeBSD-gnats-submit@freebsd.org>; Fri, 24 Feb 2012 11:07:11 +0000 (UTC)
Received: from eg.sd.rdtc.ru (localhost [127.0.0.1])
	by eg.sd.rdtc.ru (8.14.5/8.14.5) with ESMTP id q1OB77l9081799
	for <FreeBSD-gnats-submit@freebsd.org>; Fri, 24 Feb 2012 18:07:07 +0700 (NOVT)
	(envelope-from eugen@eg.sd.rdtc.ru)
Received: (from eugen@localhost)
	by eg.sd.rdtc.ru (8.14.5/8.14.5/Submit) id q1OB77Bp081798;
	Fri, 24 Feb 2012 18:07:07 +0700 (NOVT)
	(envelope-from eugen)
Message-Id: <201202241107.q1OB77Bp081798@eg.sd.rdtc.ru>
Date: Fri, 24 Feb 2012 18:07:07 +0700 (NOVT)
From: Eugene Grosbein <eugen@eg.sd.rdtc.ru>
Reply-To: Eugene Grosbein <eugen@eg.sd.rdtc.ru>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: [netisr] [patch] incorrect processing of net.isr.bindthreads=0
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         165444
>Category:       kern
>Synopsis:       [netisr] [patch] incorrect processing of net.isr.bindthreads=0
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Feb 24 11:10:04 UTC 2012
>Closed-Date:    Tue Mar 26 12:11:33 UTC 2013
>Last-Modified:  Tue Mar 26 12:11:33 UTC 2013
>Originator:     Eugene Grosbein
>Release:        FreeBSD 8.2-STABLE i386
>Organization:
RDTC JSC
>Environment:
System: FreeBSD eg.sd.rdtc.ru 8.2-STABLE FreeBSD 8.2-STABLE #37: Wed Feb 15 14:22:03 NOVT 2012 root@eg.sd.rdtc.ru:/usr/local/obj/usr/local/src/sys/EG i386

>Description:

	I've tried to use loader tunnable 'net.isr.bindthreads=0'
	for 4-core router. Sometimes each of 4 NETISR kernel threads get
	full cpu mask 0,1,2,3 but sometimes some NETISR threads get bound
	to CPU3 only.

	See also:
http://lists.freebsd.org/pipermail/freebsd-hackers/2012-January/037597.html

>How-To-Repeat:

	See above. The effect is random.

>Fix:

	To ensure correct processing of tunnable, small correction is needed,
	something like this:

--- sys/net/netisr.c.orig	2012-02-24 17:45:37.000000000 +0700
+++ sys/net/netisr.c	2012-02-24 17:47:52.000000000 +0700
@@ -980,12 +980,10 @@
 	if (error)
 		panic("%s: swi_add %d", __func__, error);
 	pc->pc_netisr = nwsp->nws_intr_event;
-	if (netisr_bindthreads) {
-		error = intr_event_bind(nwsp->nws_intr_event, cpuid);
+		error = intr_event_bind(nwsp->nws_intr_event, netisr_bindthreads ? cpuid : NOCPU);
 		if (error != 0)
 			printf("%s: cpu %u: intr_event_bind: %d", __func__,
 			    cpuid, error);
-	}
 	NETISR_WLOCK();
 	nws_array[nws_count] = nwsp->nws_cpu;
 	nws_count++;


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: pluknet 
State-Changed-When: Tue Mar 26 12:07:00 UTC 2013 
State-Changed-Why:  
Another change was committed in r230984. 
Merged to stable/9 as r232756, to stable/8 as r232757. 
This change fixes PR, as confirmed by submitter. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=165444 
>Unformatted:
