From owner-freebsd-bugs@FreeBSD.ORG Wed Sep 15 16:20:26 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 510EB16A4D2 for ; Wed, 15 Sep 2004 16:20:26 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4F9FA43D3F for ; Wed, 15 Sep 2004 16:20:18 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.11/8.12.11) with ESMTP id i8FGKI8W048372 for ; Wed, 15 Sep 2004 16:20:18 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i8FGKIdY048371; Wed, 15 Sep 2004 16:20:18 GMT (envelope-from gnats) Resent-Date: Wed, 15 Sep 2004 16:20:18 GMT Resent-Message-Id: <200409151620.i8FGKIdY048371@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, Michel Gravey Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F280A16A4CE for ; Wed, 15 Sep 2004 16:14:50 +0000 (GMT) Received: from www.freebsd.org (www.freebsd.org [216.136.204.117]) by mx1.FreeBSD.org (Postfix) with ESMTP id E2B3C43D1D for ; Wed, 15 Sep 2004 16:14:50 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.12.11/8.12.11) with ESMTP id i8FGEon6076984 for ; Wed, 15 Sep 2004 16:14:50 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.12.11/8.12.11/Submit) id i8FGEoCE076983; Wed, 15 Sep 2004 16:14:50 GMT (envelope-from nobody) Message-Id: <200409151614.i8FGEoCE076983@www.freebsd.org> Date: Wed, 15 Sep 2004 16:14:50 GMT From: Michel Gravey To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-2.3 Subject: kern/71771: Hang during heavy load with amr raid controller (466 series / dell perc 2 SC) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Sep 2004 16:20:26 -0000 >Number: 71771 >Category: kern >Synopsis: Hang during heavy load with amr raid controller (466 series / dell perc 2 SC) >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Sep 15 16:20:17 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Michel Gravey >Release: 4.10-RELEASE--p2 >Organization: 7ici >Environment: FreeBSD proliant 4.10-RELEASE-p2 FreeBSD 4.10-RELEASE-p2 #19: Thu Aug 5 21:55:46 CEST 2004 root@proliant:/usr/src/sys/compile/PROLIANT i386 >Description: The hang (no panic) comes under heavy load after 1-5 hours of make world running at -j4(or -j6 or -j12). The system is a proliant 1850R(P3SMP) with 4 drives on a hardware raid 5 controller, a amr 466 (dell perc2sc). make.conf: COPTFLAGS= -O2 -pipe -march=pentiumpro or GENERIC kernel from fresh install >How-To-Repeat: Probably very hardware specific but running several make buildworld/installworld during several hours (1-5, maybe less, it depends) with SMP turned on, with a amr controller 466 series should repeat the problem. A big dbench doesn't reproduce the problem (maybe not tried enought time). >Fix: Here is a patch from cognet@freebsd.org whitch correct the problem Index: amr.c =================================================================== RCS file: /home/ncvs/src/sys/dev/amr/amr.c,v retrieving revision 1.7.2.15 diff -u -p -r1.7.2.15 amr.c --- amr.c 22 Jul 2004 16:35:18 -0000 1.7.2.15 +++ amr.c 5 Aug 2004 11:41:30 -0000 @@ -326,7 +326,7 @@ amr_startup(void *arg) /* * Start the timeout routine. */ -/* sc->amr_timeout = timeout(amr_periodic, sc, hz);*/ + sc->amr_timeout = timeout(amr_periodic, sc, hz); return; } @@ -542,14 +542,16 @@ static void amr_periodic(void *data) { struct amr_softc *sc = (struct amr_softc *)data; - + int s; + debug_called(2); /* XXX perform periodic status checks here */ /* compensate for missed interrupts */ + s = splbio(); amr_done(sc); - + splx(s); /* reschedule */ sc->amr_timeout = timeout(amr_periodic, sc, hz); } >Release-Note: >Audit-Trail: >Unformatted: