Re: [PATCH 3/3] ALSA: hda: allow direct complete with a powered-off GPU

Takashi Iwai <[email protected]>
Newsgroups org.kernel.vger.linux-kernel,org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-sound,org.kernel.vger.platform-driver-x86
Message-ID <[email protected]>
On Wed, 12 Aug 2026 15:45:27 +0200,
Takashi Iwai wrote:
> 
> On Wed, 12 Aug 2026 14:22:06 +0200,
> Andre Eikmeyer wrote:
> > 
> > +static bool azx_vga_is_powered_off(struct azx *chip)
> > +{
> > +#ifdef SUPPORT_VGA_SWITCHEROO
> > +	struct pci_dev *pci;
> > +	bool powered_off = false;
> > +
> > +	if (!use_vga_switcheroo(container_of(chip, struct hda_intel, chip)))
> > +		return false;
> > +
> > +	pci = get_bound_vga(chip->pci);
> > +	if (pci) {
> > +		powered_off = pm_runtime_suspended(&pci->dev) &&
> > +			vga_switcheroo_get_client_state(pci) == VGA_SWITCHEROO_OFF;
> > +		pci_dev_put(pci);
> > +	}
> > +
> > +	return powered_off;
> > +#else
> > +	return false;
> > +#endif
> > +}
> 
> This ifdef can be moved to the caller side below...
> 
> > +
> >  static int azx_prepare(struct device *dev)
> >  {
> >  	struct snd_card *card = dev_get_drvdata(dev);
> > @@ -1025,6 +1048,10 @@ static int azx_prepare(struct device *dev)
> >  		return 0;
> >  
> >  	chip = card->private_data;
> > +	/* A powered-off dGPU cannot signal HDA wake events. */
> > +	if (azx_vga_is_powered_off(chip))
> > +		return 1;
> > +
> 
> ... to wrap the call site, instead.  Since this is the only caller,
> having the conditional here would make the intention clearer.

Looking at the code again, this won't work well.

But, keeping vga_switcheroo-specific code in a single place would be
still meaningful.  So,

 #ifdef SUPPORT_VGA_SWITCHEROO
 #define use_vga_switcheroo(chip)	((chip)->use_vga_switcheroo)
 #define needs_eld_notify_link(chip)	((chip)->bus.keep_power)
+static bool azx_vga_is_powered_off(struct azx *chip);
 #else
 #define use_vga_switcheroo(chip)	0
 #define needs_eld_notify_link(chip)	false
+#define azx_vga_is_powered_off(chip)	false
 #endif

and then define azx_vga_is_powered_off() in the section for
vga_switcheroo code.

In anyway, it's a matter of taste, and if the resultant patch doesn't
look better, you can keep the original way, too.


thanks,

Takashi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.