From owner-p4-projects@FreeBSD.ORG Tue Aug 1 10:11:40 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3F73A16A4E1; Tue, 1 Aug 2006 10:11:40 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1977B16A4DF for ; Tue, 1 Aug 2006 10:11:40 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BF7AC43D45 for ; Tue, 1 Aug 2006 10:11:39 +0000 (GMT) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k71ABdsu063887 for ; Tue, 1 Aug 2006 10:11:39 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k71ABd1T063884 for perforce@freebsd.org; Tue, 1 Aug 2006 10:11:39 GMT (envelope-from piso@freebsd.org) Date: Tue, 1 Aug 2006 10:11:39 GMT Message-Id: <200608011011.k71ABd1T063884@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 102914 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Aug 2006 10:11:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=102914 Change 102914 by piso@piso_newluxor on 2006/08/01 10:11:37 Setting up a filtered interrupt can't fail anymore: axe the fall back branch and the taskqueue related code. While here, mask/unmask correctly the interrupts in the filter+ithread case. Affected files ... .. //depot/projects/soc2006/intr_filter/dev/aac/aac.c#6 edit Differences ... ==== //depot/projects/soc2006/intr_filter/dev/aac/aac.c#6 (text+ko) ==== @@ -74,8 +74,7 @@ /* Command Processing */ static void aac_timeout(struct aac_softc *sc); -static void aac_complete(void *context, int pending); -static void aac_complete_wrapper(void *context); +static void aac_complete(void *context); static int aac_bio_command(struct aac_softc *sc, struct aac_command **cmp); static void aac_bio_complete(struct aac_command *cm); static int aac_wait_command(struct aac_command *cm); @@ -261,11 +260,6 @@ aac_initq_busy(sc); aac_initq_bio(sc); - /* - * Initialise command-completion task. - */ - TASK_INIT(&sc->aac_task_complete, 0, aac_complete, sc); - /* mark controller as suspended until we get ourselves organised */ sc->aac_state |= AAC_STATE_SUSPEND; @@ -314,17 +308,11 @@ } else { if (bus_setup_intr(sc->aac_dev, sc->aac_irq, INTR_TYPE_BIO, - aac_fast_intr, aac_complete_wrapper, + aac_fast_intr, aac_complete, sc, &sc->aac_intr)) { device_printf(sc->aac_dev, - "can't set up FAST interrupt\n"); - if (bus_setup_intr(sc->aac_dev, sc->aac_irq, - INTR_MPSAFE|INTR_TYPE_BIO, - NULL, aac_intr, sc, &sc->aac_intr)) { - device_printf(sc->aac_dev, - "can't set up MPSAFE interrupt\n"); - return (EINVAL); - } + "can't set up FILTERed handler\n"); + return (EINVAL); } } @@ -826,6 +814,8 @@ */ wakeup(sc->aifthread); } + if (ret & FILTER_SCHEDULE_THREAD) + AAC_MASK_INTERRUPTS(sc); return((ret)?ret:FILTER_STRAY); } @@ -1044,7 +1034,7 @@ * Process completed commands. */ static void -aac_complete(void *context, int pending) +aac_complete(void *context) { struct aac_softc *sc; struct aac_command *cm; @@ -1089,12 +1079,7 @@ aac_startio(sc); mtx_unlock(&sc->aac_io_lock); -} - -static void -aac_complete_wrapper(void *context) -{ - aac_complete(context, 0); + AAC_UNMASK_INTERRUPTS(sc); } /*