All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Suzu <suzu1dev@gmail.com>
Cc: tiwai@suse.com, perex@perex.cz, linux-sound@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] ALSA: hda/intel: Disable power saving on ASUS GU605CX
Date: Tue, 08 Sep 2026 09:21:56 +0200	[thread overview]
Message-ID: <87a4psqkbv.wl-tiwai@suse.de> (raw)
In-Reply-To: <20260906202439.209462-1-suzu1dev@gmail.com>

On Sun, 06 Sep 2026 22:24:39 +0200,
Suzu wrote:
> 
> On the ASUS ROG Zephyrus G16 GU605CX, the ALC285 analog headphone
> output produces a loud pop about ten seconds after playback stops
> with power_save=10. This was reproduced with iLoud Micro Monitor
> powered speakers connected to the 3.5 mm jack. Setting power_save=0
> eliminated the idle pops in repeated pause/resume tests on
> 7.2.3-arch1-2, with power_save_controller left enabled.
> 
> Extend the power-save denylist check to cover the tested Intel HDA
> controller (8086:7728, subsystem 1043:1034) on this board. Check the
> DMI board vendor and name as well, since GU605CW also uses subsystem
> 1043:1034 and has not been tested for this issue. Keep the existing
> pm_blacklist override behavior.
> 
> Disabling idle power saving can increase idle power consumption on
> the matched controller. A separate pop during shutdown was still
> observed with power_save=0; this change does not address it.
> 
> Link: https://github.com/omacom/omarchy/pull/10498
> Assisted-by: LLM
> Signed-off-by: Suzu <suzu1dev@gmail.com>
> ---
> Validation completed on the affected GU605CX:
> - Built and booted the complete patched 7.3-rc1 kernel; the native
>   kernel build log contains no warnings.
> - Verified that the loaded HDA module's srcversion matches the built
>   artifact for 7.3.0-rc1-audio-pop-test.
> - Confirmed power_save=10, power_save_controller=Y and pm_blacklist=-1,
>   with the expected 1043:1034 power-save denylist message.
> - In five samples spanning 40 seconds, the Intel analog PipeWire sink
>   was SUSPENDED while the ALC285 remained runtime-active with
>   power/control=on. This was sampled observation, not continuous tracing.
> - Intel and NVIDIA HDMI codecs were observed suspended with
>   power/control=auto; the NVIDIA HDA controller was also suspended.
> - After booting this kernel and receiving the pause/resume test
>   instructions, the user confirmed that the popping was no longer
>   audible. The exact number of cycles and pause durations were not
>   separately reported for this patched-kernel test.
> - The earlier power_save=0 workaround also passed human pause/resume
>   listening tests on 7.2.3-arch1-2, with controller power saving enabled.
> 
> Headphone switching, internal speakers and suspend/resume checks have
> not been reported for this patched kernel. Boot-time popping remains
> unverified. A shutdown pop was previously observed with power_save=0;
> this change does not address that shutdown path. No reliable measurement
> of additional idle power consumption is available.
> 
> Test-build context: an Arch-derived configuration with debug information
> and BTF disabled was used. NVIDIA 610.57.04 test modules required a
> separate local adaptation for the 7.3 dmem cgroup registration API.
> Those modules built and initialized; their objtool return warnings also
> occurred in the production-driver build. The NVIDIA adaptation is not
> part of this audio patch. Full graphics regression testing was not done.
> 
> AI assistance: I asked OpenAI Codex to investigate the idle pops
> and prepare a GU605CX-specific fix. It assisted with the patch,
> changelog and build/runtime checks. I performed the listening
> tests; results are described above. I booted the patched kernel
> and confirmed that the idle pop was no longer audible.
> 
> No introducing commit has been identified, so no Fixes tag is proposed.
> 
>  sound/hda/controllers/intel.c | 22 +++++++++++++++++-----
>  1 file changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/hda/controllers/intel.c b/sound/hda/controllers/intel.c
> index 24015c73a..6da1d7ee5 100644
> --- a/sound/hda/controllers/intel.c
> +++ b/sound/hda/controllers/intel.c
> @@ -2328,18 +2328,30 @@ static const struct snd_pci_quirk power_save_denylist[] = {
>  	{}
>  };
>  
> +static bool azx_is_power_save_denylisted(struct pci_dev *pci)
> +{
> +	if (snd_pci_quirk_lookup(pci, power_save_denylist))
> +		return true;
> +
> +	/* GU605CW shares the subsystem ID; only GU605CX was tested. */
> +	return pci->vendor == PCI_VENDOR_ID_INTEL &&
> +	       pci->device == PCI_DEVICE_ID_INTEL_HDA_ARL &&
> +	       pci->subsystem_vendor == 0x1043 &&
> +	       pci->subsystem_device == 0x1034 &&
> +	       dmi_match(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC.") &&
> +	       dmi_match(DMI_BOARD_NAME, "GU605CX");
> +}
> +
>  static void set_default_power_save(struct azx *chip)
>  {
>  	struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
>  	int val = power_save;
>  
>  	if (pm_blacklist < 0) {
> -		const struct snd_pci_quirk *q;
> -
> -		q = snd_pci_quirk_lookup(chip->pci, power_save_denylist);
> -		if (q && val) {
> +		if (val && azx_is_power_save_denylisted(chip->pci)) {
>  			dev_info(chip->card->dev, "device %04x:%04x is on the power_save denylist, forcing power_save to 0\n",
> -				 q->subvendor, q->subdevice);
> +				 chip->pci->subsystem_vendor,
> +				 chip->pci->subsystem_device);
>  			val = 0;
>  			hda->runtime_pm_disabled = 1;
>  		}
> 
> base-commit: 45b5beb60bf7bd41c55ef17f6f2d28b351fad6c0

First of all, note that the power-save deny-list is a last resort.
Often better to tweak the existing quirks than disabling the runtime
PM.

And, even if we go for the pm deny-list, you can just add PCI SSID.
Both models are very likely same configurations.

Last but not least, you must provide a full real name (or a known
identity) in Signed-off-by tag.  It's a legal requirement.  The From
tag should also be the same, too.


thanks,

Takashi

      reply	other threads:[~2026-09-08  7:22 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-06 20:24 [RFC PATCH] ALSA: hda/intel: Disable power saving on ASUS GU605CX Suzu
2026-09-08  7:21 ` Takashi Iwai [this message]

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=87a4psqkbv.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=suzu1dev@gmail.com \
    --cc=tiwai@suse.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.