Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp15230272rwb; Mon, 28 Nov 2022 09:14:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf7UpC8I/ATg+mn08EFkZ9j+/Mo53FOumGiFoGPLyRxDunnNCJWFkBKY2FJTgakKfYIzQCVS X-Received: by 2002:a17:906:924e:b0:782:2d3e:6340 with SMTP id c14-20020a170906924e00b007822d3e6340mr44678648ejx.234.1669655680231; Mon, 28 Nov 2022 09:14:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669655680; cv=none; d=google.com; s=arc-20160816; b=jl/99zAcLvTci1M3/53Dr0H+HogQWTff3nCHcgE72Tzc9kp9/OC7zvbfZtgJuDWyxq 6QYcBUd/SzzFyxbjvCmSxya1DgSrg/CO9P8UbuichMTn+n+RvYjwd0VTbIDJIGerOV2h /5vGBsF0NlJksF92dv4dP4jmWhjIGZVGdmkpi+1J7pd5IQHA2n3/2GXb7M8eXPFHt2si 4+yDbvvYbq9PhQprvQjFdZB77x8gmiETaLEja9hI3/gqdv6kKJZ0SpUUgyALsIBbGg8b mS4CM2/wve19gdGVxfTD3obw4nY3SnGCLAh7hki/4opDievs9/BT/EgUinht3EWWOHdg G4iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:in-reply-to :subject:cc:to:from:message-id:date:dkim-signature:dkim-signature; bh=bHyNFoEUl0TFkTENNZ9c1IhmOVfqEGsTTbiQpl93k+I=; b=tMeWVGqHSDPwppOsPgB5+9Uh25YdG2pwfut3mK/ibgDtz8OjflRw3gycLiItmKJ8Uu wV9HgTpPp7R1PEAGGDvtJ+MWF7iR7i3sF+dUoHe+fLnXF03HIQJovh28tuZeyvLUVUiB PApDanhRGrk/fhgxse8Jh60L0n4fX7iyTYZF78xp82vIGi0E1ZRzar6PeLMOn3ixHnmd aZ2WT22qEOQhVfb+TH3nFOZAV9bik4SXUY32Qd0kMA6+WFSISp2jejIO+GQ9vBlYKxBb tsKpI6rgcALwKiwIn95MkZWAsasglBOwE0G7YaImYDHHCYDzNmvfeadKfA6Op4ca+t5U oIcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=DZZA5jOb; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t18-20020a1709063e5200b0078dbec0aa81si8140566eji.214.2022.11.28.09.14.18; Mon, 28 Nov 2022 09:14:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=DZZA5jOb; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232706AbiK1RFX (ORCPT + 84 others); Mon, 28 Nov 2022 12:05:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232550AbiK1REk (ORCPT ); Mon, 28 Nov 2022 12:04:40 -0500 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F275193DC; Mon, 28 Nov 2022 09:04:39 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1E7591FDC1; Mon, 28 Nov 2022 17:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1669655078; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=bHyNFoEUl0TFkTENNZ9c1IhmOVfqEGsTTbiQpl93k+I=; b=DZZA5jObkTaeAZN7mMPirFneGcSprZknKRoQhR/Y/qCXncPJhhE4OB2gT8sXJ37xu0O796 o5aObYjiShF2U9HzlzpA8taj/NxeLNIEFKc8GO8zahKcysdkjPZnKSRr7NZZhQLUAI9Lxk vBndXIAKZZZ6omKISQwrBYPWDjBhLlI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1669655078; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=bHyNFoEUl0TFkTENNZ9c1IhmOVfqEGsTTbiQpl93k+I=; b=PrZyQljE6aPU4Pf59hjnBwPnNR32OKNJ100efSHqb2pHGF/vO0TGUUji1FhA6MBbYrXlcc N1PJIHM81tDRrFBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id D83101326E; Mon, 28 Nov 2022 17:04:37 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id l2sVNCXqhGMUeQAAMHmgww (envelope-from ); Mon, 28 Nov 2022 17:04:37 +0000 Date: Mon, 28 Nov 2022 18:04:37 +0100 Message-ID: <87mt8bqaca.wl-tiwai@suse.de> From: Takashi Iwai To: Pierre-Louis Bossart Cc: Ricardo Ribalda , Kai Vehmanen , Jaroslav Kysela , Peter Ujfalusi , Mark Brown , Daniel Baluta , Bard Liao , Takashi Iwai , Ranjani Sridharan , Liam Girdwood , alsa-devel@alsa-project.org, sound-open-firmware@alsa-project.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH v4] ALSA: core: Fix deadlock when shutdown a frozen userspace In-Reply-To: <5171929e-b750-d2f1-fec9-b34d76c18dcb@linux.intel.com> References: <20221127-snd-freeze-v4-0-51ca64b7f2ab@chromium.org> <5171929e-b750-d2f1-fec9-b34d76c18dcb@linux.intel.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 28 Nov 2022 17:49:20 +0100, Pierre-Louis Bossart wrote: > > > > On 11/28/22 07:42, Ricardo Ribalda wrote: > > During kexec(), the userspace is frozen. Therefore we cannot wait for it > > to complete. > > > > Avoid running snd_sof_machine_unregister during shutdown. > > > > This fixes: > > > > [ 84.943749] Freezing user space processes ... (elapsed 0.111 seconds) done. > > [ 246.784446] INFO: task kexec-lite:5123 blocked for more than 122 seconds. > > [ 246.819035] Call Trace: > > [ 246.821782] > > [ 246.824186] __schedule+0x5f9/0x1263 > > [ 246.828231] schedule+0x87/0xc5 > > [ 246.831779] snd_card_disconnect_sync+0xb5/0x127 > > ... > > [ 246.889249] snd_sof_device_shutdown+0xb4/0x150 > > [ 246.899317] pci_device_shutdown+0x37/0x61 > > [ 246.903990] device_shutdown+0x14c/0x1d6 > > [ 246.908391] kernel_kexec+0x45/0xb9 > > > > And: > > > > [ 246.893222] INFO: task kexec-lite:4891 blocked for more than 122 seconds. > > [ 246.927709] Call Trace: > > [ 246.930461] > > [ 246.932819] __schedule+0x5f9/0x1263 > > [ 246.936855] ? fsnotify_grab_connector+0x5c/0x70 > > [ 246.942045] schedule+0x87/0xc5 > > [ 246.945567] schedule_timeout+0x49/0xf3 > > [ 246.949877] wait_for_completion+0x86/0xe8 > > [ 246.954463] snd_card_free+0x68/0x89 > > ... > > [ 247.001080] platform_device_unregister+0x12/0x35 > > > > Cc: stable@vger.kernel.org > > Fixes: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown") > > Signed-off-by: Ricardo Ribalda > > --- > > To: Pierre-Louis Bossart > > To: Liam Girdwood > > To: Peter Ujfalusi > > To: Bard Liao > > To: Ranjani Sridharan > > To: Kai Vehmanen > > To: Daniel Baluta > > To: Mark Brown > > To: Jaroslav Kysela > > To: Takashi Iwai > > Cc: sound-open-firmware@alsa-project.org > > Cc: alsa-devel@alsa-project.org > > Cc: linux-kernel@vger.kernel.org > > --- > > Changes in v4: > > - Do not call snd_sof_machine_unregister from shutdown. > > - Link to v3: https://lore.kernel.org/r/20221127-snd-freeze-v3-0-a2eda731ca14@chromium.org > > > > Changes in v3: > > - Wrap pm_freezing in a function > > - Link to v2: https://lore.kernel.org/r/20221127-snd-freeze-v2-0-d8a425ea9663@chromium.org > > > > Changes in v2: > > - Only use pm_freezing if CONFIG_FREEZER > > - Link to v1: https://lore.kernel.org/r/20221127-snd-freeze-v1-0-57461a366ec2@chromium.org > > --- > > sound/soc/sof/core.c | 7 ++----- > > 1 file changed, 2 insertions(+), 5 deletions(-) > > > > diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c > > index 3e6141d03770..9616ba607ded 100644 > > --- a/sound/soc/sof/core.c > > +++ b/sound/soc/sof/core.c > > @@ -475,19 +475,16 @@ EXPORT_SYMBOL(snd_sof_device_remove); > > int snd_sof_device_shutdown(struct device *dev) > > { > > struct snd_sof_dev *sdev = dev_get_drvdata(dev); > > - struct snd_sof_pdata *pdata = sdev->pdata; > > > > if (IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE)) > > cancel_work_sync(&sdev->probe_work); > > > > /* > > - * make sure clients and machine driver(s) are unregistered to force > > - * all userspace devices to be closed prior to the DSP shutdown sequence > > + * make sure clients are unregistered prior to the DSP shutdown > > + * sequence. > > */ > > sof_unregister_clients(sdev); > > > > - snd_sof_machine_unregister(sdev, pdata); > > - > > The comment clearly says that we do want all userspace devices to be > closed. This was added in 83bfc7e793b5 ("ASoC: SOF: core: unregister > clients and machine drivers in .shutdown") precisely to avoid a platform > hang if the devices are used after the shutdown completes. The problem is that it wants the *close* of the user-space programs unnecessarily. Basically the shutdown can be seen as a sort of device hot unplug; i.e. the disconnection of the device files and the cleanup of device state are the main task. The difference is that the hot unplug (unbind) usually follows the sync for the all processes being closed (so that you can release all resources gracefully), while this step is skipped for the shutdown (no need for resource-free). Takashi