From owner-freebsd-bugs@FreeBSD.ORG Fri Feb 24 11:10:04 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E45861065670 for ; Fri, 24 Feb 2012 11:10:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 97F9B8FC22 for ; Fri, 24 Feb 2012 11:10:04 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q1OBA4ke078730 for ; Fri, 24 Feb 2012 11:10:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q1OBA4qV078729; Fri, 24 Feb 2012 11:10:04 GMT (envelope-from gnats) Resent-Date: Fri, 24 Feb 2012 11:10:04 GMT Resent-Message-Id: <201202241110.q1OBA4qV078729@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Eugene Grosbein Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A14141065670 for ; 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 ; 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 ; 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 To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/165444: [netisr] [patch] incorrect processing of net.isr.bindthreads=0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Eugene Grosbein List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Feb 2012 11:10:05 -0000 >Number: 165444 >Category: kern >Synopsis: [netisr] [patch] incorrect processing of net.isr.bindthreads=0 >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Feb 24 11:10:04 UTC 2012 >Closed-Date: >Last-Modified: >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: >Unformatted: