From owner-freebsd-multimedia@FreeBSD.ORG Sat Feb 4 01:20:07 2006 Return-Path: X-Original-To: freebsd-multimedia@hub.freebsd.org Delivered-To: freebsd-multimedia@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1E7E816A420 for ; Sat, 4 Feb 2006 01:20:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 44E1543D49 for ; Sat, 4 Feb 2006 01:20:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k141K5mr075824 for ; Sat, 4 Feb 2006 01:20:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k141K5uf075823; Sat, 4 Feb 2006 01:20:05 GMT (envelope-from gnats) Date: Sat, 4 Feb 2006 01:20:05 GMT Message-Id: <200602040120.k141K5uf075823@freefall.freebsd.org> To: freebsd-multimedia@FreeBSD.org From: Ariff Abdullah Cc: Subject: Re: kern/92764: [snd_ich] [panic] Kernel panic undef RELENG_6. X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Ariff Abdullah List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Feb 2006 01:20:07 -0000 The following reply was made to PR kern/92764; it has been noted by GNATS. From: Ariff Abdullah To: bug-followup@FreeBSD.org, joe@tao.org.uk Cc: Subject: Re: kern/92764: [snd_ich] [panic] Kernel panic undef RELENG_6. Date: Sat, 4 Feb 2006 09:15:15 +0800 This is a multi-part message in MIME format. --Multipart=_Sat__4_Feb_2006_09_15_15_+0800_=1wUHUCM48SoTx+1 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Does this patch fix it? -- Ariff Abdullah FreeBSD --Multipart=_Sat__4_Feb_2006_09_15_15_+0800_=1wUHUCM48SoTx+1 Content-Type: text/plain; name="ich.c.diff" Content-Disposition: attachment; filename="ich.c.diff" Content-Transfer-Encoding: 7bit --- src/sys/dev/sound/pci/ich.c.orig Tue Jan 17 13:13:37 2006 +++ src/sys/dev/sound/pci/ich.c Sat Feb 4 09:08:45 2006 @@ -677,7 +677,6 @@ ich_init(struct sc_info *sc) { u_int32_t stat; - int sz; ich_wr(sc, ICH_REG_GLOB_CNT, ICH_GLOB_CTL_COLD, 4); DELAY(600000); @@ -701,15 +700,6 @@ if (sc->hasmic && ich_resetchan(sc, 2)) return ENXIO; - if (bus_dmamem_alloc(sc->dmat, (void **)&sc->dtbl, BUS_DMA_NOWAIT, &sc->dtmap)) - return ENOSPC; - - sz = sizeof(struct ich_desc) * ICH_DTBL_LENGTH * 3; - if (bus_dmamap_load(sc->dmat, sc->dtmap, sc->dtbl, sz, ich_setmap, sc, 0)) { - bus_dmamem_free(sc->dmat, (void **)&sc->dtbl, sc->dtmap); - return ENOSPC; - } - return 0; } @@ -828,6 +818,15 @@ goto bad; } + if (bus_dmamem_alloc(sc->dmat, (void **)&sc->dtbl, + BUS_DMA_NOWAIT, &sc->dtmap)) + goto bad; + + if (bus_dmamap_load(sc->dmat, sc->dtmap, sc->dtbl, + sizeof(struct ich_desc) * ICH_DTBL_LENGTH * 3, + ich_setmap, sc, 0)) + goto bad; + sc->codec = AC97_CREATE(dev, sc, ich_ac97); if (sc->codec == NULL) goto bad; @@ -895,6 +894,10 @@ if (sc->nabmbar) bus_release_resource(dev, sc->regtype, sc->nabmbarid, sc->nabmbar); + if (sc->dtmap) + bus_dmamap_unload(sc->dmat, sc->dtmap); + if (sc->dmat) + bus_dma_tag_destroy(sc->dmat); if (sc->ich_lock) snd_mtxfree(sc->ich_lock); free(sc, M_DEVBUF); @@ -916,6 +919,7 @@ bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq); bus_release_resource(dev, sc->regtype, sc->nambarid, sc->nambar); bus_release_resource(dev, sc->regtype, sc->nabmbarid, sc->nabmbar); + bus_dmamap_unload(sc->dmat, sc->dtmap); bus_dma_tag_destroy(sc->dmat); snd_mtxfree(sc->ich_lock); free(sc, M_DEVBUF); @@ -987,24 +991,21 @@ } /* Reinit mixer */ ich_pci_codec_reset(sc); + ICH_UNLOCK(sc); ac97_setextmode(sc->codec, sc->hasvra | sc->hasvrm); if (mixer_reinit(dev) == -1) { device_printf(dev, "unable to reinitialize the mixer\n"); - ICH_UNLOCK(sc); return ENXIO; } /* Re-start DMA engines */ for (i = 0 ; i < 3; i++) { struct sc_chinfo *ch = &sc->ch[i]; if (sc->ch[i].run_save) { - ICH_UNLOCK(sc); ichchan_setblocksize(0, ch, ch->blksz); ichchan_setspeed(0, ch, ch->spd); ichchan_trigger(0, ch, PCMTRIG_START); - ICH_LOCK(sc); } } - ICH_UNLOCK(sc); return 0; } --Multipart=_Sat__4_Feb_2006_09_15_15_+0800_=1wUHUCM48SoTx+1--