From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE8B4CA9EC0 for ; Mon, 28 Oct 2019 11:10:15 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 34BC2214E0 for ; Mon, 28 Oct 2019 11:10:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="Zhcke3bF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34BC2214E0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id F346B1F12; Mon, 28 Oct 2019 12:09:22 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz F346B1F12 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1572261013; bh=hLRRxTzZEqGFtUud+EOYMeJZnMIDgtdHyyD+2na+sR4=; h=Date:From:To:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Zhcke3bFdLT4EsTGUZ5+VvOeQ+Sn9Ngq6pOv0lB5Y9AD7s3NbSrrO4YfaKefeGvwi DeqW5Q5TI8jHeRGdD37wJGUIsi3IMy7bh0+x7CBTfy9xu0OrOVWcgh2KYp/wHqdYXL s5mH/Z/idfVU06x3QDKC2mZxCB/Skx/6bf7/jt4U= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 734C7F802BD; Mon, 28 Oct 2019 12:09:22 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 922E5F80361; Mon, 28 Oct 2019 12:09:20 +0100 (CET) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 1A938F80145 for ; Mon, 28 Oct 2019 12:09:17 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 1A938F80145 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 1F7ECB61F; Mon, 28 Oct 2019 11:09:17 +0000 (UTC) Date: Mon, 28 Oct 2019 12:09:16 +0100 Message-ID: From: Takashi Iwai To: Chris Wilson In-Reply-To: References: <20191028081056.22010-1-tiwai@suse.de> <157225086749.26808.5121664839140883561@skylake-alporthouse-com> 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/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: Jonas Witschel , alsa-devel@alsa-project.org Subject: Re: [alsa-devel] [PATCH] Revert "ALSA: hda: Flush interrupts on disabling" X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Mon, 28 Oct 2019 09:24:00 +0100, Takashi Iwai wrote: > > On Mon, 28 Oct 2019 09:21:07 +0100, > Chris Wilson wrote: > > > > Quoting Takashi Iwai (2019-10-28 08:10:56) > > > This reverts commit caa8422d01e983782548648e125fd617cadcec3f. > > > > > > It turned out that this commit caused a regression at shutdown / > > > reboot, as the synchronize_irq() calls seems blocking the whole > > > shutdown. Also another part of the change about shuffling the call > > > order looks suspicious; the azx_stop_chip() call disables the CORB / > > > RIRB while the others may still need the CORB/RIRB update. > > > > > > Since the original commit itself was a cargo-fix, let's revert the > > > whole patch. > > > > You will want to include a link to the bug you may be reintroducing so > > you have that information for easy reference later. > > Actually I forgot to put the Fixes tag where usually you can track the > original issue from there. Will fix it. I don't mind to put yet > another bug link tag, though. > > > Also do you know if you fixed the bug in any other way, because our CI > > hasn't reported that GPF since the patch landed. > > Well, let's see whether the GPF reappears with the revert at first. > It might be another fix that covered. Thinking over this again, the patch below should cover this kind of races (hopefully). I'm going to queue this together with the revert. thanks, Takashi -- 8< -- From: Takashi Iwai Subject: [PATCH] ALSA: hda - Fix pending unsol events at shutdown This is an alternative fix attemp for the issue reported in the commit caa8422d01e9 ("ALSA: hda: Flush interrupts on disabling") that was reverted later due to regressions. Instead of tweaking the hardware disablement order and the enforced irq flushing, do calling cancel_work_sync() of the unsol work early enough, and explicitly ignore the unsol events during the shutdown by checking the bus->shutdown flag. Fixes: caa8422d01e9 ("ALSA: hda: Flush interrupts on disabling") Cc: Chris Wilson Signed-off-by: Takashi Iwai --- sound/pci/hda/hda_bind.c | 4 ++++ sound/pci/hda/hda_intel.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c index 8272b50b8349..6a8564566375 100644 --- a/sound/pci/hda/hda_bind.c +++ b/sound/pci/hda/hda_bind.c @@ -43,6 +43,10 @@ static void hda_codec_unsol_event(struct hdac_device *dev, unsigned int ev) { struct hda_codec *codec = container_of(dev, struct hda_codec, core); + /* ignore unsol events during shutdown */ + if (codec->bus->shutdown) + return; + if (codec->patch_ops.unsol_event) codec->patch_ops.unsol_event(codec, ev); } diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index cf53fbd872ee..7304a92559a3 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1382,8 +1382,11 @@ static int azx_free(struct azx *chip) static int azx_dev_disconnect(struct snd_device *device) { struct azx *chip = device->device_data; + struct hdac_bus *bus = azx_bus(chip); chip->bus.shutdown = 1; + cancel_work_sync(&bus->unsol_work); + return 0; } -- 2.16.4 _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel