From owner-p4-projects@FreeBSD.ORG Tue Jul 1 23:36:53 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 940EF1065671; Tue, 1 Jul 2008 23:36:53 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5602F106568A for ; Tue, 1 Jul 2008 23:36:53 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3ED818FC17 for ; Tue, 1 Jul 2008 23:36:53 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m61NarDa002648 for ; Tue, 1 Jul 2008 23:36:53 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m61Narvo002646 for perforce@freebsd.org; Tue, 1 Jul 2008 23:36:53 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 1 Jul 2008 23:36:53 GMT Message-Id: <200807012336.m61Narvo002646@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 144450 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 Jul 2008 23:36:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=144450 Change 144450 by hselasky@hselasky_laptop001 on 2008/07/01 23:36:42 Workaround panic at USB sound device detach during playback! There might be a deadlock situation here if the USB sound device is located on the same HUB like the mouse and keyboard, and the HUB is detached, but else this works fine and is better than nothing. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/sound/uaudio2.c#3 (text+ko) ==== @@ -661,11 +661,6 @@ device_printf(dev, "No midi sequencer\n"); } - if (sc->sc_play_chan.valid || - sc->sc_rec_chan.valid) { - device_printf(dev, "WARNING: Unplugging the device while " - "it is in use will cause a panic!\n"); - } DPRINTF(0, "doing child attach\n"); /* attach the children */ @@ -760,6 +755,7 @@ struct uaudio_softc *sc = device_get_softc(device_get_parent(dev)); int error = 0; +repeat: if (sc->sc_pcm_registered) { error = pcm_unregister(dev); } else { @@ -769,8 +765,11 @@ } if (error) { - panic("Please don't detach your sound device " - "while it is in use. This is not supported yet!\n"); + device_printf(dev, "Waiting for sound application to exit!\n"); + mtx_lock(&Giant); + usb2_pause_mtx(&Giant, 2000); + mtx_unlock(&Giant); + goto repeat; /* try again */ } return (0); /* success */ }