From owner-freebsd-bugs@FreeBSD.ORG Thu Nov 18 21:00:19 2010 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 51DA01065673 for ; Thu, 18 Nov 2010 21:00:19 +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 13FBA8FC1A for ; Thu, 18 Nov 2010 21:00:19 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oAIL0I8q097690 for ; Thu, 18 Nov 2010 21:00:18 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oAIL0Ixx097680; Thu, 18 Nov 2010 21:00:18 GMT (envelope-from gnats) Resent-Date: Thu, 18 Nov 2010 21:00:18 GMT Resent-Message-Id: <201011182100.oAIL0Ixx097680@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, Jason Harmening Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6BF5F106564A for ; Thu, 18 Nov 2010 20:55:35 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id 42E288FC21 for ; Thu, 18 Nov 2010 20:55:35 +0000 (UTC) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id oAIKtYd9057262 for ; Thu, 18 Nov 2010 20:55:34 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id oAIKtYe5057261; Thu, 18 Nov 2010 20:55:34 GMT (envelope-from nobody) Message-Id: <201011182055.oAIKtYe5057261@www.freebsd.org> Date: Thu, 18 Nov 2010 20:55:34 GMT From: Jason Harmening To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: kern/152378: [sound][patch] Update snd_envy24ht to be MPSAFE and use 32-bit DMA addresses X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Nov 2010 21:00:19 -0000 >Number: 152378 >Category: kern >Synopsis: [sound][patch] Update snd_envy24ht to be MPSAFE and use 32-bit DMA addresses >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Nov 18 21:00:18 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Jason Harmening >Release: 8.1-STABLE >Organization: >Environment: FreeBSD riviera.austin.rr.com 8.1-STABLE FreeBSD 8.1-STABLE #0: Sun Nov 14 12:01:19 CST 2010 jason@riviera.austin.rr.com:/usr/obj/usr/src/sys/CUSTOM amd64 >Description: --Allow DMA addresses anywhere in the lower 4GB--Envy24HT has a 32-bit DMA engine, not 28-bit like Envy24 --Mark interrupt handler as MPSAFE, seems to be correctly synchronized Testing done: daily usage of envy24ht-based sound card for ~1yr on machine w/ 6GB RAM >How-To-Repeat: >Fix: Patch attached with submission follows: --- envy24ht.h.orig 2007-05-27 14:58:39.000000000 -0500 +++ envy24ht.h 2009-05-06 10:49:56.000000000 -0500 @@ -176,8 +176,7 @@ #define ENVY24HT_VOL_MIN 96 /* -144db(negate) */ #define ENVY24HT_VOL_MUTE 127 /* mute */ -#define BUS_SPACE_MAXADDR_ENVY24 0x0fffffff /* Address space beyond 256MB is not - supported */ +#define BUS_SPACE_MAXADDR_ENVY24 0xffffffff #define BUS_SPACE_MAXSIZE_ENVY24 0x3fffc /* 64k x 4byte(1dword) */ #define ENVY24HT_CCS_GPIO_HDATA 0x1E --- envy24ht.c 2009-05-07 09:09:31.000000000 -0500 +++ envy24ht.c 2009-05-07 09:22:38.000000000 -0500 @@ -2421,7 +2421,7 @@ sc->irq = bus_alloc_resource(sc->dev, SYS_RES_IRQ, &sc->irqid, 0, ~0, 1, RF_ACTIVE | RF_SHAREABLE); if (!sc->irq || - snd_setup_intr(sc->dev, sc->irq, 0, envy24ht_intr, sc, &sc->ih)) { + snd_setup_intr(sc->dev, sc->irq, INTR_MPSAFE, envy24ht_intr, sc, &sc->ih)) { device_printf(sc->dev, "unable to map interrupt\n"); return ENXIO; } @@ -2431,7 +2431,7 @@ /*alignment*/4, /*boundary*/0, /*lowaddr*/BUS_SPACE_MAXADDR_ENVY24, - /*highaddr*/BUS_SPACE_MAXADDR_ENVY24, + /*highaddr*/BUS_SPACE_MAXADDR, /*filter*/NULL, /*filterarg*/NULL, /*maxsize*/BUS_SPACE_MAXSIZE_ENVY24, /*nsegments*/1, /*maxsegsz*/0x3ffff, >Release-Note: >Audit-Trail: >Unformatted: