linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Takashi Iwai <tiwai@suse.de>, Roy Spliet <nouveau@spliet.org>,
	Sasha Levin <sashal@kernel.org>,
	alsa-devel@alsa-project.org
Subject: [PATCH AUTOSEL 5.4 09/26] ALSA: hda: Keep the controller initialization even if no codecs found
Date: Fri, 24 Apr 2020 08:23:06 -0400	[thread overview]
Message-ID: <20200424122323.10194-9-sashal@kernel.org> (raw)
In-Reply-To: <20200424122323.10194-1-sashal@kernel.org>

From: Takashi Iwai <tiwai@suse.de>

[ Upstream commit 9479e75fca370a5220784f7596bf598c4dad0b9b ]

Currently, when the HD-audio controller driver doesn't detect any
codecs, it tries to abort the probe.  But this abort happens at the
delayed probe, i.e. the primary probe call already returned success,
hence the driver is never unbound until user does so explicitly.
As a result, it may leave the HD-audio device in the running state
without the runtime PM.  More badly, if the device is a HD-audio bus
that is tied with a GPU, GPU cannot reach to the full power down and
consumes unnecessarily much power.

This patch changes the logic after no-codec situation; it continues
probing without the further codec initialization but keep the
controller driver running normally.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043
Tested-by: Roy Spliet <nouveau@spliet.org>
Link: https://lore.kernel.org/r/20200413082034.25166-5-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/pci/hda/hda_intel.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 2b288c523dce0..6ccf34840e8a1 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1958,7 +1958,7 @@ static int azx_first_init(struct azx *chip)
 	/* codec detection */
 	if (!azx_bus(chip)->codec_mask) {
 		dev_err(card->dev, "no codecs found!\n");
-		return -ENODEV;
+		/* keep running the rest for the runtime PM */
 	}
 
 	if (azx_acquire_irq(chip, 0) < 0)
@@ -2269,9 +2269,11 @@ static int azx_probe_continue(struct azx *chip)
 #endif
 
 	/* create codec instances */
-	err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]);
-	if (err < 0)
-		goto out_free;
+	if (bus->codec_mask) {
+		err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]);
+		if (err < 0)
+			goto out_free;
+	}
 
 #ifdef CONFIG_SND_HDA_PATCH_LOADER
 	if (chip->fw) {
@@ -2285,7 +2287,7 @@ static int azx_probe_continue(struct azx *chip)
 #endif
 	}
 #endif
-	if ((probe_only[dev] & 1) == 0) {
+	if (bus->codec_mask && !(probe_only[dev] & 1)) {
 		err = azx_codec_configure(chip);
 		if (err < 0)
 			goto out_free;
-- 
2.20.1


  parent reply	other threads:[~2020-04-24 12:23 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24 12:22 [PATCH AUTOSEL 5.4 01/26] libbpf: Initialize *nl_pid so gcc 10 is happy Sasha Levin
2020-04-24 12:22 ` [PATCH AUTOSEL 5.4 02/26] net: fec: set GPR bit on suspend by DT configuration Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 03/26] x86: hyperv: report value of misc_features Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 04/26] signal: check sig before setting info in kill_pid_usb_asyncio Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 05/26] afs: Fix length of dump of bad YFSFetchStatus record Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 06/26] xfs: acquire superblock freeze protection on eofblocks scans Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 07/26] xfs: fix partially uninitialized structure in xfs_reflink_remap_extent Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 08/26] ALSA: hda: Release resources at error in delayed probe Sasha Levin
2020-04-24 12:23 ` Sasha Levin [this message]
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 10/26] ALSA: hda: Skip controller resume if not needed Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 11/26] ALSA: hda: Explicitly permit using autosuspend if runtime PM is supported Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 12/26] scsi: target: fix PR IN / READ FULL STATUS for FC Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 13/26] scsi: target: tcmu: reset_ring should reset TCMU_DEV_BIT_BROKEN Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 14/26] objtool: Fix CONFIG_UBSAN_TRAP unreachable warnings Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 15/26] objtool: Support Clang non-section symbols in ORC dump Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 16/26] xen/xenbus: ensure xenbus_map_ring_valloc() returns proper grant status Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 17/26] ALSA: hda: call runtime_allow() for all hda controllers Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 18/26] net: stmmac: socfpga: Allow all RGMII modes Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 19/26] net/cxgb4: Check the return from t4_query_params properly Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 20/26] mac80211: fix channel switch trigger from unknown mesh peer Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 21/26] arm64: Delete the space separator in __emit_inst Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 22/26] ext4: use matching invalidatepage in ext4_writepage Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 23/26] ext4: increase wait time needed before reuse of deleted inode numbers Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 24/26] ext4: convert BUG_ON's to WARN_ON's in mballoc.c Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 25/26] blk-mq: Put driver tag in blk_mq_dispatch_rq_list() when no budget Sasha Levin
2020-04-24 12:23 ` [PATCH AUTOSEL 5.4 26/26] hwmon: (jc42) Fix name to have no illegal characters Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200424122323.10194-9-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nouveau@spliet.org \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).