From owner-p4-projects@FreeBSD.ORG Tue May 30 08:20:33 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 0269116A486; Tue, 30 May 2006 08:20:33 +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 5008016A4A1 for ; Tue, 30 May 2006 08:20:30 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9430C43D58 for ; Tue, 30 May 2006 08:20:29 +0000 (GMT) (envelope-from kmacy@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 k4U8JDud007356 for ; Tue, 30 May 2006 08:19:13 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k4U8JCOW007353 for perforce@freebsd.org; Tue, 30 May 2006 08:19:12 GMT (envelope-from kmacy@freebsd.org) Date: Tue, 30 May 2006 08:19:12 GMT Message-Id: <200605300819.k4U8JCOW007353@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 98119 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, 30 May 2006 08:20:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=98119 Change 98119 by kmacy@kmacy_storage:sun4v_work on 2006/05/30 08:19:01 remove nexus_intr_wrapper, set interrupt state in intr_execute_handlers Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/intr_machdep.c#7 edit .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/nexus.c#12 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/intr_machdep.c#7 (text+ko) ==== @@ -295,6 +295,8 @@ ih->ih_handler(ih->ih_argument); } + hvio_intr_setstate(iv->iv_vec, HV_INTR_IDLE_STATE); + /* Schedule a heavyweight interrupt process. */ if (thread) error = intr_event_schedule_thread(ie); ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/nexus.c#12 (text+ko) ==== @@ -81,15 +81,6 @@ struct rman sc_mem_rman; }; -typedef struct nexus_id { - devhandle_t dh; - uint32_t ino; - devhandle_t nid_ihdl; - driver_intr_t *nid_handler; - void *nid_arg; - -} nexus_id_t; - static device_probe_t nexus_probe; static device_attach_t nexus_attach; static bus_print_child_t nexus_print_child; @@ -310,48 +301,6 @@ #ifdef SUN4V -void nexus_intr_reset(void *arg); - -void -nexus_intr_reset(void *arg) -{ - nexus_id_t *nidp; - - nidp = (nexus_id_t *)arg; - - hvio_intr_setstate(nidp->nid_ihdl, HV_INTR_IDLE_STATE); - -} - - -static void -nexus_intr_wrapper(void *arg) -{ - nexus_id_t *nidp; - driver_intr_t *handler; - void *harg; - - nidp = (nexus_id_t *)arg; - handler = nidp->nid_handler; - harg = nidp->nid_arg; - - (*handler)(harg); - - hvio_intr_setstate(nidp->nid_ihdl, HV_INTR_IDLE_STATE); - -#ifdef DEBUG - if (nidp->dh == 0x7c0) { - int state, valid; - hvio_intr_getstate(nidp->nid_ihdl, &state); - hvio_intr_getvalid(nidp->nid_ihdl, &valid); - printf("i: %#lx, s: %d, v: %d\n", nidp->nid_ihdl, state, valid); - } -#endif -} - - - - static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_intr_t *intr, void *arg, void **cookiep) @@ -360,7 +309,6 @@ uint64_t ihdl; uint64_t ino; int error, cpuid; - nexus_id_t *nidp; ndi = device_get_ivars(child); @@ -405,19 +353,8 @@ if ((error = rman_activate_resource(res))) goto fail; - if ((nidp = malloc(sizeof(nexus_id_t), M_DEVBUF, M_NOWAIT)) == NULL) { - printf("failed to allocate nexus_id\n"); - error = ENOMEM; - goto fail; - } - nidp->nid_ihdl = ihdl; - nidp->nid_handler = intr; - nidp->nid_arg = arg; - nidp->dh = ndi->ndi_devhandle; - nidp->ino = ino; - error = inthand_add(device_get_nameunit(child), ihdl, - nexus_intr_wrapper, nidp, flags, cookiep); + intr, arg, flags, cookiep); fail: