Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759455AbaD3QgR (ORCPT ); Wed, 30 Apr 2014 12:36:17 -0400 Received: from cantor2.suse.de ([195.135.220.15]:49225 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758872AbaD3QgO (ORCPT ); Wed, 30 Apr 2014 12:36:14 -0400 Date: Wed, 30 Apr 2014 18:36:12 +0200 Message-ID: From: Takashi Iwai To: Bryan Quigley Cc: linux-kernel@vger.kernel.org Subject: Re: PROBLEM: Pulseaudio hung at schedule in 3.15-rc1 In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At Wed, 30 Apr 2014 12:10:48 -0400, Bryan Quigley wrote: > > Still issues, on plugging it in after boot and running sudo lsusb -v > Apr 30 11:53:30 dell-laptop kernel: [ 54.320063] usb 6-2: new > full-speed USB device number 2 using uhci_hcd > Apr 30 11:53:30 dell-laptop kernel: [ 54.680097] usb 6-2: not > running at top speed; connect to a high speed hub > Apr 30 11:53:30 dell-laptop kernel: [ 54.822100] usb 6-2: New USB > device found, idVendor=046d, idProduct=0825 > Apr 30 11:53:30 dell-laptop kernel: [ 54.822106] usb 6-2: New USB > device strings: Mfr=0, Product=0, SerialNumber=2 > Apr 30 11:53:30 dell-laptop kernel: [ 54.822109] usb 6-2: > SerialNumber: 0911F220 > Apr 30 11:53:30 dell-laptop kernel: [ 54.825210] uvcvideo: Found UVC > 1.00 device (046d:0825) > Apr 30 11:53:30 dell-laptop kernel: [ 54.925311] input: UVC Camera > (046d:0825) as /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0/input/input18 > Apr 30 11:53:31 dell-laptop kernel: [ 56.107099] usb 6-2: set > resolution quirk: cval->res = 384 > Apr 30 11:53:31 dell-laptop kernel: [ 56.107353] usbcore: registered > new interface driver snd-usb-audio > Apr 30 11:53:36 dell-laptop kernel: [ 60.869958] usb 6-2: 3:1: > usb_set_interface failed (-113) > Apr 30 11:53:36 dell-laptop kernel: [ 60.869991] usb 6-2: 3:1: > usb_set_interface failed (-113) > (Repeats until device is reset) > > The above also happens on bootup. (No longer hangs pulseaudio because > the device seems to fail..). Hm, what about the one below instead? Takashi --- diff --git a/sound/usb/card.c b/sound/usb/card.c index 893d5a1afc3c..2d49a7eeb7c7 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -653,7 +653,7 @@ int snd_usb_autoresume(struct snd_usb_audio *chip) down_read(&chip->shutdown_rwsem); if (chip->probing) err = 0; - else if (!chip->shutdown) + else if (!chip->shutdown && !chip->in_pm) err = usb_autopm_get_interface(chip->pm_intf); up_read(&chip->shutdown_rwsem); @@ -663,7 +663,7 @@ int snd_usb_autoresume(struct snd_usb_audio *chip) void snd_usb_autosuspend(struct snd_usb_audio *chip) { down_read(&chip->shutdown_rwsem); - if (!chip->shutdown && !chip->probing) + if (!chip->shutdown && !chip->probing && !chip->in_pm) usb_autopm_put_interface(chip->pm_intf); up_read(&chip->shutdown_rwsem); } @@ -695,8 +695,9 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message) chip->autosuspended = 1; } - list_for_each_entry(mixer, &chip->mixer_list, list) - snd_usb_mixer_suspend(mixer); + if (chip->num_suspended_intf == 1) + list_for_each_entry(mixer, &chip->mixer_list, list) + snd_usb_mixer_suspend(mixer); return 0; } @@ -711,6 +712,8 @@ static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume) return 0; if (--chip->num_suspended_intf) return 0; + + chip->in_pm = 1; /* * ALSA leaves material resumption to user space * we just notify and restart the mixers @@ -726,6 +729,7 @@ static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume) chip->autosuspended = 0; err_out: + chip->in_pm = 0; return err; } diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 25c4c7e217de..91d0380431b4 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -40,6 +40,7 @@ struct snd_usb_audio { struct rw_semaphore shutdown_rwsem; unsigned int shutdown:1; unsigned int probing:1; + unsigned int in_pm:1; unsigned int autosuspended:1; unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/