From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 1/3] ALSA: hda - Handle error from snd_hda_power_up*() Date: Wed, 27 Jun 2018 18:09:35 +0200 Message-ID: References: <20180627091034.22724-1-tiwai@suse.de> <20180627091034.22724-2-tiwai@suse.de> <153011487107.8693.7624551348316365861@mail.alporthouse.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id D7BEF266E76 for ; Wed, 27 Jun 2018 18:09:36 +0200 (CEST) In-Reply-To: <153011487107.8693.7624551348316365861@mail.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Chris Wilson Cc: alsa-devel@alsa-project.org, Ville =?UTF-8?B?U3lyasOkbMOk?= List-Id: alsa-devel@alsa-project.org On Wed, 27 Jun 2018 17:54:31 +0200, Chris Wilson wrote: > > Quoting Takashi Iwai (2018-06-27 10:10:32) > > Although snd_hda_power_up() and snd_hda_power_up_pm() may fail, we > > haven't dealt with the error properly in many places. It's an unusual > > situation but still possible. > > > > This patch spots these places and adds the proper error paths. > > > > Signed-off-by: Takashi Iwai > > Verdict from CI, > > https://intel-gfx-ci.01.org/tree/drm-tip/Trybot_2430/issues.html > > is that this one causes a bunch of pm fallout. > > Do you mind doing a quick revert? Or working with our CI to find the bad > chunk? Hrm, it doesn't look good -- I revert the branch merge now. Thanks for the quick heads up. Takashi > > On a second look, > > > @@ -7310,7 +7339,8 @@ static void ca0132_free(struct hda_codec *codec) > > struct ca0132_spec *spec = codec->spec; > > > > cancel_delayed_work_sync(&spec->unsol_hp_work); > > - snd_hda_power_up(codec); > > + if (snd_hda_power_up(codec) < 0) > > + goto skip_shutdown; > > switch (spec->quirk) { > > case QUIRK_SBZ: > > sbz_exit_chip(codec); > > @@ -7326,6 +7356,7 @@ static void ca0132_free(struct hda_codec *codec) > > break; > > } > > snd_hda_power_down(codec); > > + skip_shutdown: > > if (spec->mem_base) > > iounmap(spec->mem_base); > > kfree(spec->spec_init_verbs); > > would seem to be the only chunk more complicated than the rest. > -Chris >