diff mbox series

Revert "ALSA: hda - Fix intermittent CORB/RIRB stall on Intel chips"

Message ID 20190725080300.1913-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series Revert "ALSA: hda - Fix intermittent CORB/RIRB stall on Intel chips" | expand

Commit Message

Chris Wilson July 25, 2019, 8:03 a.m. UTC
Just a heads up that icl is consistently showing

<4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
<4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
<3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11

following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
always 1, use that fact.")

Cc: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/hda_intel.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Takashi Iwai July 25, 2019, 8:16 a.m. UTC | #1
On Thu, 25 Jul 2019 10:03:00 +0200,
Chris Wilson wrote:
> 
> Just a heads up that icl is consistently showing
> 
> <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> 
> following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> always 1, use that fact.")

The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
vendor-specific verb for HDMI), so it shouldn't matter whether with or
without write sync, because it needs to read the response in anyway.

If that patch broke anything, it means that something else was already
broken.  Oh well, that ICL crap...

Is it about the runtime PM, or S3 or S4?  The only case we need to
re-issue this verb is only S4, I suppose, so we may skip that in most
cases.


thanks,

Takashi

> 
> Cc: Takashi Iwai <tiwai@suse.de>
> ---
>  sound/pci/hda/hda_intel.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index 324a4b20fba9..fdde80d95966 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -313,10 +313,11 @@ enum {
>  
>  #define AZX_DCAPS_INTEL_SKYLAKE \
>  	(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
> -	 AZX_DCAPS_SYNC_WRITE |\
>  	 AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
>  
> -#define AZX_DCAPS_INTEL_BROXTON		AZX_DCAPS_INTEL_SKYLAKE
> +#define AZX_DCAPS_INTEL_BROXTON \
> +	(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
> +	 AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
>  
>  /* quirks for ATI SB / AMD Hudson */
>  #define AZX_DCAPS_PRESET_ATI_SB \
> -- 
> 2.22.0
>
Takashi Iwai July 25, 2019, 8:26 a.m. UTC | #2
On Thu, 25 Jul 2019 10:16:07 +0200,
Takashi Iwai wrote:
> 
> On Thu, 25 Jul 2019 10:03:00 +0200,
> Chris Wilson wrote:
> > 
> > Just a heads up that icl is consistently showing
> > 
> > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > 
> > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > always 1, use that fact.")
> 
> The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> vendor-specific verb for HDMI), so it shouldn't matter whether with or
> without write sync, because it needs to read the response in anyway.
> 
> If that patch broke anything, it means that something else was already
> broken.  Oh well, that ICL crap...
> 
> Is it about the runtime PM, or S3 or S4?  The only case we need to
> re-issue this verb is only S4, I suppose, so we may skip that in most
> cases.

Now checking the code, and I believe the workaround applied there can
be skipped for non-Haswell chips.  Could you try the patch below in
addition?


thanks,

Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: hda/hdmi - Avoid Haswell-specific power workaround on
 recent chips

The HDMI codec driver applies a vendor-specific verb before turning on
the AFG power on Intel chips.  This was needed for Haswell by some
reason, but apparently this breaks occasionally on other recent Intel
chips.

For papering over the problem, apply the workaround only for Haswell
chips.  The verb 0x781/f81 is restored via regcache later in anyway.

Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/patch_hdmi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 2096993eaf28..68ffe169cf52 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2809,7 +2809,8 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,
 
 	codec->display_power_control = 1;
 
-	codec->patch_ops.set_power_state = haswell_set_power_state;
+	if (is_haswell(codec))
+		codec->patch_ops.set_power_state = haswell_set_power_state;
 	codec->depop_delay = 0;
 	codec->auto_runtime_pm = 1;
Chris Wilson July 25, 2019, 8:30 a.m. UTC | #3
Quoting Takashi Iwai (2019-07-25 09:26:56)
> On Thu, 25 Jul 2019 10:16:07 +0200,
> Takashi Iwai wrote:
> > 
> > On Thu, 25 Jul 2019 10:03:00 +0200,
> > Chris Wilson wrote:
> > > 
> > > Just a heads up that icl is consistently showing
> > > 
> > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > 
> > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > always 1, use that fact.")
> > 
> > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > without write sync, because it needs to read the response in anyway.
> > 
> > If that patch broke anything, it means that something else was already
> > broken.  Oh well, that ICL crap...
> > 
> > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > re-issue this verb is only S4, I suppose, so we may skip that in most
> > cases.
> 
> Now checking the code, and I believe the workaround applied there can
> be skipped for non-Haswell chips.  Could you try the patch below in
> addition?

Due to the way patchwork works, this patch will now be tested instead of
the revert. So watch this space.
-Chris
Chris Wilson July 25, 2019, 10:21 a.m. UTC | #4
Quoting Chris Wilson (2019-07-25 09:30:25)
> Quoting Takashi Iwai (2019-07-25 09:26:56)
> > On Thu, 25 Jul 2019 10:16:07 +0200,
> > Takashi Iwai wrote:
> > > 
> > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > Chris Wilson wrote:
> > > > 
> > > > Just a heads up that icl is consistently showing
> > > > 
> > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > 
> > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > always 1, use that fact.")
> > > 
> > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > without write sync, because it needs to read the response in anyway.
> > > 
> > > If that patch broke anything, it means that something else was already
> > > broken.  Oh well, that ICL crap...
> > > 
> > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > cases.
> > 
> > Now checking the code, and I believe the workaround applied there can
> > be skipped for non-Haswell chips.  Could you try the patch below in
> > addition?
> 
> Due to the way patchwork works, this patch will now be tested instead of
> the revert. So watch this space.

Sadly, no change. Patchwork definitely lists this patch as being the one
tested, but maybe send it separately just in case.
-Chris
Takashi Iwai July 25, 2019, 10:44 a.m. UTC | #5
On Thu, 25 Jul 2019 12:21:11 +0200,
Chris Wilson wrote:
> 
> Quoting Chris Wilson (2019-07-25 09:30:25)
> > Quoting Takashi Iwai (2019-07-25 09:26:56)
> > > On Thu, 25 Jul 2019 10:16:07 +0200,
> > > Takashi Iwai wrote:
> > > > 
> > > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > > Chris Wilson wrote:
> > > > > 
> > > > > Just a heads up that icl is consistently showing
> > > > > 
> > > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > > 
> > > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > > always 1, use that fact.")
> > > > 
> > > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > > without write sync, because it needs to read the response in anyway.
> > > > 
> > > > If that patch broke anything, it means that something else was already
> > > > broken.  Oh well, that ICL crap...
> > > > 
> > > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > > cases.
> > > 
> > > Now checking the code, and I believe the workaround applied there can
> > > be skipped for non-Haswell chips.  Could you try the patch below in
> > > addition?
> > 
> > Due to the way patchwork works, this patch will now be tested instead of
> > the revert. So watch this space.
> 
> Sadly, no change. Patchwork definitely lists this patch as being the one
> tested, but maybe send it separately just in case.

Hm, does the error indicate the same message ("last cmd=0x202f8100")?
If yes, we might need another workaround.  This is a special verb for
Intel with some black magic to communicate with GPU.  The tweak via
this verb is needed for other platforms to assure the enablement of
all pins and DP 1.2, but it might be incorrect for ICL.

Can anyone at Intel check whether the verb (0x781/0xf81) is still
valid for ICL?

Anyways below is a patch to leave the verb access for ICL.
Let's see...


thanks,

Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: hda/hdmi - Don't apply black magic to Icelake HDMI
 codecs

The Intel-specific verb to enable all pins and DP 1.2 seems causing a
problem on ICL by some reason.  Skip applying the verb for ICL as a
workaround.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/patch_hdmi.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 2096993eaf28..7e8236e5eac0 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2804,12 +2804,15 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,
 	spec->port_map = port_map;
 	spec->port_num = port_num;
 
-	intel_haswell_enable_all_pins(codec, true);
-	intel_haswell_fixup_enable_dp12(codec);
+	if (!is_icelake(codec)) {
+		intel_haswell_enable_all_pins(codec, true);
+		intel_haswell_fixup_enable_dp12(codec);
+	}
 
 	codec->display_power_control = 1;
 
-	codec->patch_ops.set_power_state = haswell_set_power_state;
+	if (!is_icelake(codec))
+		codec->patch_ops.set_power_state = haswell_set_power_state;
 	codec->depop_delay = 0;
 	codec->auto_runtime_pm = 1;
Chris Wilson July 25, 2019, 10:49 a.m. UTC | #6
Quoting Takashi Iwai (2019-07-25 11:44:08)
> On Thu, 25 Jul 2019 12:21:11 +0200,
> Chris Wilson wrote:
> > 
> > Quoting Chris Wilson (2019-07-25 09:30:25)
> > > Quoting Takashi Iwai (2019-07-25 09:26:56)
> > > > On Thu, 25 Jul 2019 10:16:07 +0200,
> > > > Takashi Iwai wrote:
> > > > > 
> > > > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > > > Chris Wilson wrote:
> > > > > > 
> > > > > > Just a heads up that icl is consistently showing
> > > > > > 
> > > > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > > > 
> > > > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > > > always 1, use that fact.")
> > > > > 
> > > > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > > > without write sync, because it needs to read the response in anyway.
> > > > > 
> > > > > If that patch broke anything, it means that something else was already
> > > > > broken.  Oh well, that ICL crap...
> > > > > 
> > > > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > > > cases.
> > > > 
> > > > Now checking the code, and I believe the workaround applied there can
> > > > be skipped for non-Haswell chips.  Could you try the patch below in
> > > > addition?
> > > 
> > > Due to the way patchwork works, this patch will now be tested instead of
> > > the revert. So watch this space.
> > 
> > Sadly, no change. Patchwork definitely lists this patch as being the one
> > tested, but maybe send it separately just in case.
> 
> Hm, does the error indicate the same message ("last cmd=0x202f8100")?

https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13745/fi-icl-u2/igt@i915_module_load@reload.html
<4> [383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
<4> [384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
<3> [556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11

Looks different, indeed all the errors in BAT are last cmd=0x202f8100
-Chris
Chris Wilson July 25, 2019, 12:50 p.m. UTC | #7
Quoting Takashi Iwai (2019-07-25 11:44:08)
> On Thu, 25 Jul 2019 12:21:11 +0200,
> Chris Wilson wrote:
> > 
> > Quoting Chris Wilson (2019-07-25 09:30:25)
> > > Quoting Takashi Iwai (2019-07-25 09:26:56)
> > > > On Thu, 25 Jul 2019 10:16:07 +0200,
> > > > Takashi Iwai wrote:
> > > > > 
> > > > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > > > Chris Wilson wrote:
> > > > > > 
> > > > > > Just a heads up that icl is consistently showing
> > > > > > 
> > > > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > > > 
> > > > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > > > always 1, use that fact.")
> > > > > 
> > > > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > > > without write sync, because it needs to read the response in anyway.
> > > > > 
> > > > > If that patch broke anything, it means that something else was already
> > > > > broken.  Oh well, that ICL crap...
> > > > > 
> > > > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > > > cases.
> > > > 
> > > > Now checking the code, and I believe the workaround applied there can
> > > > be skipped for non-Haswell chips.  Could you try the patch below in
> > > > addition?
> > > 
> > > Due to the way patchwork works, this patch will now be tested instead of
> > > the revert. So watch this space.
> > 
> > Sadly, no change. Patchwork definitely lists this patch as being the one
> > tested, but maybe send it separately just in case.
> 
> Hm, does the error indicate the same message ("last cmd=0x202f8100")?
> If yes, we might need another workaround.  This is a special verb for
> Intel with some black magic to communicate with GPU.  The tweak via
> this verb is needed for other platforms to assure the enablement of
> all pins and DP 1.2, but it might be incorrect for ICL.
> 
> Can anyone at Intel check whether the verb (0x781/0xf81) is still
> valid for ICL?
> 
> Anyways below is a patch to leave the verb access for ICL.
> Let's see...
> 
> 
> thanks,
> 
> Takashi
> 
> -- 8< --
> From: Takashi Iwai <tiwai@suse.de>
> Subject: [PATCH] ALSA: hda/hdmi - Don't apply black magic to Icelake HDMI
>  codecs
> 
> The Intel-specific verb to enable all pins and DP 1.2 seems causing a
> problem on ICL by some reason.  Skip applying the verb for ICL as a
> workaround.

Hmm. Nothing with icl-hda managed to boot. Coincidence?

> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  sound/pci/hda/patch_hdmi.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 2096993eaf28..7e8236e5eac0 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -2804,12 +2804,15 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,
>         spec->port_map = port_map;
>         spec->port_num = port_num;
>  
> -       intel_haswell_enable_all_pins(codec, true);
> -       intel_haswell_fixup_enable_dp12(codec);
> +       if (!is_icelake(codec)) {
> +               intel_haswell_enable_all_pins(codec, true);
> +               intel_haswell_fixup_enable_dp12(codec);
> +       }
>  
>         codec->display_power_control = 1;
>  
> -       codec->patch_ops.set_power_state = haswell_set_power_state;
> +       if (!is_icelake(codec))
> +               codec->patch_ops.set_power_state = haswell_set_power_state;
>         codec->depop_delay = 0;
>         codec->auto_runtime_pm = 1;
>  
> -- 
> 2.16.4
> 
>
Takashi Iwai July 25, 2019, 1:10 p.m. UTC | #8
On Thu, 25 Jul 2019 14:50:18 +0200,
Chris Wilson wrote:
> 
> Quoting Takashi Iwai (2019-07-25 11:44:08)
> > On Thu, 25 Jul 2019 12:21:11 +0200,
> > Chris Wilson wrote:
> > > 
> > > Quoting Chris Wilson (2019-07-25 09:30:25)
> > > > Quoting Takashi Iwai (2019-07-25 09:26:56)
> > > > > On Thu, 25 Jul 2019 10:16:07 +0200,
> > > > > Takashi Iwai wrote:
> > > > > > 
> > > > > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > > > > Chris Wilson wrote:
> > > > > > > 
> > > > > > > Just a heads up that icl is consistently showing
> > > > > > > 
> > > > > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > > > > 
> > > > > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > > > > always 1, use that fact.")
> > > > > > 
> > > > > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > > > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > > > > without write sync, because it needs to read the response in anyway.
> > > > > > 
> > > > > > If that patch broke anything, it means that something else was already
> > > > > > broken.  Oh well, that ICL crap...
> > > > > > 
> > > > > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > > > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > > > > cases.
> > > > > 
> > > > > Now checking the code, and I believe the workaround applied there can
> > > > > be skipped for non-Haswell chips.  Could you try the patch below in
> > > > > addition?
> > > > 
> > > > Due to the way patchwork works, this patch will now be tested instead of
> > > > the revert. So watch this space.
> > > 
> > > Sadly, no change. Patchwork definitely lists this patch as being the one
> > > tested, but maybe send it separately just in case.
> > 
> > Hm, does the error indicate the same message ("last cmd=0x202f8100")?
> > If yes, we might need another workaround.  This is a special verb for
> > Intel with some black magic to communicate with GPU.  The tweak via
> > this verb is needed for other platforms to assure the enablement of
> > all pins and DP 1.2, but it might be incorrect for ICL.
> > 
> > Can anyone at Intel check whether the verb (0x781/0xf81) is still
> > valid for ICL?
> > 
> > Anyways below is a patch to leave the verb access for ICL.
> > Let's see...
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> > -- 8< --
> > From: Takashi Iwai <tiwai@suse.de>
> > Subject: [PATCH] ALSA: hda/hdmi - Don't apply black magic to Icelake HDMI
> >  codecs
> > 
> > The Intel-specific verb to enable all pins and DP 1.2 seems causing a
> > problem on ICL by some reason.  Skip applying the verb for ICL as a
> > workaround.
> 
> Hmm. Nothing with icl-hda managed to boot. Coincidence?

No idea, honestly speaking, but it's a bad sign.  Let's scratch.


Takashi


> 
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > ---
> >  sound/pci/hda/patch_hdmi.c | 9 ++++++---
> >  1 file changed, 6 insertions(+), 3 deletions(-)
> > 
> > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> > index 2096993eaf28..7e8236e5eac0 100644
> > --- a/sound/pci/hda/patch_hdmi.c
> > +++ b/sound/pci/hda/patch_hdmi.c
> > @@ -2804,12 +2804,15 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,
> >         spec->port_map = port_map;
> >         spec->port_num = port_num;
> >  
> > -       intel_haswell_enable_all_pins(codec, true);
> > -       intel_haswell_fixup_enable_dp12(codec);
> > +       if (!is_icelake(codec)) {
> > +               intel_haswell_enable_all_pins(codec, true);
> > +               intel_haswell_fixup_enable_dp12(codec);
> > +       }
> >  
> >         codec->display_power_control = 1;
> >  
> > -       codec->patch_ops.set_power_state = haswell_set_power_state;
> > +       if (!is_icelake(codec))
> > +               codec->patch_ops.set_power_state = haswell_set_power_state;
> >         codec->depop_delay = 0;
> >         codec->auto_runtime_pm = 1;
> >  
> > -- 
> > 2.16.4
> > 
> > 
>
Takashi Iwai July 25, 2019, 1:45 p.m. UTC | #9
On Thu, 25 Jul 2019 12:49:12 +0200,
Chris Wilson wrote:
> 
> Quoting Takashi Iwai (2019-07-25 11:44:08)
> > On Thu, 25 Jul 2019 12:21:11 +0200,
> > Chris Wilson wrote:
> > > 
> > > Quoting Chris Wilson (2019-07-25 09:30:25)
> > > > Quoting Takashi Iwai (2019-07-25 09:26:56)
> > > > > On Thu, 25 Jul 2019 10:16:07 +0200,
> > > > > Takashi Iwai wrote:
> > > > > > 
> > > > > > On Thu, 25 Jul 2019 10:03:00 +0200,
> > > > > > Chris Wilson wrote:
> > > > > > > 
> > > > > > > Just a heads up that icl is consistently showing
> > > > > > > 
> > > > > > > <4> [315.478830] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> > > > > > > <4> [316.482799] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> > > > > > > <3> [508.412915] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > > > > > > 
> > > > > > > following commits 2756d9143aa5 ("ALSA: hda - Fix intermittent CORB/RIRB
> > > > > > > stall on Intel chips") and a30f1743e4f5 ("ALSA: line6: sizeof (byte) is
> > > > > > > always 1, use that fact.")
> > > > > > 
> > > > > > The verb that stalls (0x202f8100) is a read verb (0xf81, Intel
> > > > > > vendor-specific verb for HDMI), so it shouldn't matter whether with or
> > > > > > without write sync, because it needs to read the response in anyway.
> > > > > > 
> > > > > > If that patch broke anything, it means that something else was already
> > > > > > broken.  Oh well, that ICL crap...
> > > > > > 
> > > > > > Is it about the runtime PM, or S3 or S4?  The only case we need to
> > > > > > re-issue this verb is only S4, I suppose, so we may skip that in most
> > > > > > cases.
> > > > > 
> > > > > Now checking the code, and I believe the workaround applied there can
> > > > > be skipped for non-Haswell chips.  Could you try the patch below in
> > > > > addition?
> > > > 
> > > > Due to the way patchwork works, this patch will now be tested instead of
> > > > the revert. So watch this space.
> > > 
> > > Sadly, no change. Patchwork definitely lists this patch as being the one
> > > tested, but maybe send it separately just in case.
> > 
> > Hm, does the error indicate the same message ("last cmd=0x202f8100")?
> 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13745/fi-icl-u2/igt@i915_module_load@reload.html
> <4> [383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
> <4> [384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
> <3> [556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11

Looking at the logs around this, you can find:

<7>[  380.741747] [IGT] i915_module_load: executing
<7>[  380.745788] [IGT] i915_module_load: starting subtest reload
<4>[  383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
<4>[  384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
<3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
<3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
<7>[  556.636556] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
<7>[  556.636681] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
<7>[  556.636775] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
<7>[  556.636865] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7>[  556.636959] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7>[  556.637042] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7>[  556.637134] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
<7>[  556.637312] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
<7>[  556.637445] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7>[  556.637557] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7>[  556.637664] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7>[  556.637751] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
<7>[  556.637825] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
<7>[  556.637900] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
<7>[  556.679134] [IGT] i915_module_load: executing
<7>[  556.681585] [IGT] i915_module_load: starting subtest reload-no-display

What does it actually do?  First off, there is a big gap in the
timestamps between 384 and 556.

Then it shows "Unable to sync register", which indicates the regcache
sync at resume failed, followed by the ELD checks showing all
negative.  So it's still all disconnected.  Maybe it's trying to poke
the graphics side before the gfx initialization completed?

After this error, the HDMI audio codec seems completely screwed up,
and the probe of codec#2 always failed.

This loos pretty much like a timing related problem.


Takashi
Chris Wilson July 25, 2019, 1:57 p.m. UTC | #10
Quoting Takashi Iwai (2019-07-25 14:45:10)
> On Thu, 25 Jul 2019 12:49:12 +0200,
> Chris Wilson wrote:
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13745/fi-icl-u2/igt@i915_module_load@reload.html
> > <4> [383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
> > <4> [384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
> > <3> [556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> 
> Looking at the logs around this, you can find:
> 
> <7>[  380.741747] [IGT] i915_module_load: executing
> <7>[  380.745788] [IGT] i915_module_load: starting subtest reload
> <4>[  383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
> <4>[  384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
> <3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> <3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> <7>[  556.636556] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> <7>[  556.636681] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> <7>[  556.636775] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> <7>[  556.636865] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7>[  556.636959] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7>[  556.637042] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7>[  556.637134] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> <7>[  556.637312] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> <7>[  556.637445] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7>[  556.637557] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7>[  556.637664] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7>[  556.637751] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> <7>[  556.637825] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> <7>[  556.637900] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> <7>[  556.679134] [IGT] i915_module_load: executing
> <7>[  556.681585] [IGT] i915_module_load: starting subtest reload-no-display
> 
> What does it actually do?  First off, there is a big gap in the
> timestamps between 384 and 556.

Therein is where our current problem lies. Looking at the run just before
this pair of commits,

<6> [405.838716] [IGT] i915_module_load: executing
<6> [405.841651] [IGT] i915_module_load: starting subtest reload
<4> [408.976245] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
<4> [409.980171] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
<3> [410.985180] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to single_cmd mode: last cmd=0x202f8100
<3> [411.227736] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -5
<7> [411.227849] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
<7> [411.227886] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
<7> [411.227917] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7> [411.227947] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7> [411.228004] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
<7> [411.228041] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
<7> [411.228077] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
<7> [411.228125] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
<7> [411.228160] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7> [411.228187] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7> [411.228214] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
<7> [411.228239] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
<7> [411.228265] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
<7> [411.228291] [drm:i915_audio_component_get_eld [i915]] Not valid for port F

Same error, but no delay. There's no telltale to determine if this is
during module unload or at the start of the next probe.
 
> Then it shows "Unable to sync register", which indicates the regcache
> sync at resume failed, followed by the ELD checks showing all
> negative.  So it's still all disconnected.  Maybe it's trying to poke
> the graphics side before the gfx initialization completed?

That should also be accompanied by lots of bad mmio warnings, and would
be very odd for:
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6546/git-log-oneline.log
144ffb4c55b9 drm-tip: 2019y-07m-25d-05h-23m-02s UTC integration manifest
2756d9143aa5 ALSA: hda - Fix intermittent CORB/RIRB stall on Intel chips
a30f1743e4f5 ALSA: line6: sizeof (byte) is always 1, use that fact.
a6efe73f1e08 drm-tip: 2019y-07m-24d-10h-01m-04s UTC integration manifest

> After this error, the HDMI audio codec seems completely screwed up,
> and the probe of codec#2 always failed.
> 
> This loos pretty much like a timing related problem.

It got flagged as an issue because the reload test is suddenly hitting
the timeout.
-Chris
Takashi Iwai July 25, 2019, 2:54 p.m. UTC | #11
On Thu, 25 Jul 2019 15:57:10 +0200,
Chris Wilson wrote:
> 
> Quoting Takashi Iwai (2019-07-25 14:45:10)
> > On Thu, 25 Jul 2019 12:49:12 +0200,
> > Chris Wilson wrote:
> > > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13745/fi-icl-u2/igt@i915_module_load@reload.html
> > > <4> [383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
> > > <4> [384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
> > > <3> [556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > 
> > Looking at the logs around this, you can find:
> > 
> > <7>[  380.741747] [IGT] i915_module_load: executing
> > <7>[  380.745788] [IGT] i915_module_load: starting subtest reload
> > <4>[  383.858354] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x20170500
> > <4>[  384.860261] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x20170500
> > <3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > <3>[  556.636243] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -11
> > <7>[  556.636556] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> > <7>[  556.636681] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> > <7>[  556.636775] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> > <7>[  556.636865] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> > <7>[  556.636959] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> > <7>[  556.637042] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> > <7>[  556.637134] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> > <7>[  556.637312] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> > <7>[  556.637445] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> > <7>[  556.637557] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> > <7>[  556.637664] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> > <7>[  556.637751] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> > <7>[  556.637825] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> > <7>[  556.637900] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> > <7>[  556.679134] [IGT] i915_module_load: executing
> > <7>[  556.681585] [IGT] i915_module_load: starting subtest reload-no-display
> > 
> > What does it actually do?  First off, there is a big gap in the
> > timestamps between 384 and 556.
> 
> Therein is where our current problem lies. Looking at the run just before
> this pair of commits,
> 
> <6> [405.838716] [IGT] i915_module_load: executing
> <6> [405.841651] [IGT] i915_module_load: starting subtest reload
> <4> [408.976245] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f8100
> <4> [409.980171] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f8100
> <3> [410.985180] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to single_cmd mode: last cmd=0x202f8100
> <3> [411.227736] snd_hda_codec_hdmi hdaudioC0D2: Unable to sync register 0x2f8100. -5
> <7> [411.227849] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> <7> [411.227886] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
> <7> [411.227917] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7> [411.227947] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7> [411.228004] [drm:i915_audio_component_get_eld [i915]] Not valid for port C
> <7> [411.228041] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> <7> [411.228077] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> <7> [411.228125] [drm:i915_audio_component_get_eld [i915]] Not valid for port D
> <7> [411.228160] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7> [411.228187] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7> [411.228214] [drm:i915_audio_component_get_eld [i915]] Not valid for port E
> <7> [411.228239] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> <7> [411.228265] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> <7> [411.228291] [drm:i915_audio_component_get_eld [i915]] Not valid for port F
> 
> Same error, but no delay.

OK, that sheds some light.  With the recent fix using the write-sync,
each verb execution is synchronous and waits for the codec response.
And judging from the log, at this state, the codec doesn't respond
properly, so each verb execution gets some delay.  This accumulated as
a large delay in the end, now appearing as a significant timeout
error.

So, that's not the error triggered by the recent fix.  It's been
there, but just ignored, so far.

> There's no telltale to determine if this is
> during module unload or at the start of the next probe.

This is an interesting question.  And, the very puzzling fact seen in
the log is that the codec tries to access 0x202f8100, which is verb
0xf81.  This is exactly my last patch tried to avoid.

Is this really the result *only* with my second patch?
We may try a patch to disable two functions
intel_haswell_enable_all_pins() and intel_haswell_fixup_enable_dp12()
completely.  If this still shows the same verb, something is really
wrong in testing.


Takashi

-- 8< --
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2567,14 +2567,15 @@ static void intel_haswell_fixup_connect_list(struct hda_codec *codec,
 	snd_hda_override_conn_list(codec, nid, spec->num_cvts, spec->cvt_nids);
 }
 
-#define INTEL_GET_VENDOR_VERB	0xf81
-#define INTEL_SET_VENDOR_VERB	0x781
+//#define INTEL_GET_VENDOR_VERB	0xf81
+//#define INTEL_SET_VENDOR_VERB	0x781
 #define INTEL_EN_DP12		0x02	/* enable DP 1.2 features */
 #define INTEL_EN_ALL_PIN_CVTS	0x01	/* enable 2nd & 3rd pins and convertors */
 
 static void intel_haswell_enable_all_pins(struct hda_codec *codec,
 					  bool update_tree)
 {
+#if 0 // XXX
 	unsigned int vendor_param;
 	struct hdmi_spec *spec = codec->spec;
 
@@ -2591,10 +2592,12 @@ static void intel_haswell_enable_all_pins(struct hda_codec *codec,
 
 	if (update_tree)
 		snd_hda_codec_update_widgets(codec);
+#endif // XXX
 }
 
 static void intel_haswell_fixup_enable_dp12(struct hda_codec *codec)
 {
+#if 0 // XXX
 	unsigned int vendor_param;
 	struct hdmi_spec *spec = codec->spec;
 
@@ -2608,6 +2611,7 @@ static void intel_haswell_fixup_enable_dp12(struct hda_codec *codec)
 	snd_hdac_regmap_add_vendor_verb(&codec->core, INTEL_SET_VENDOR_VERB);
 	snd_hda_codec_write_cache(codec, spec->vendor_nid, 0,
 				INTEL_SET_VENDOR_VERB, vendor_param);
+#endif // XXX
 }
 
 /* Haswell needs to re-issue the vendor-specific verbs before turning to D0.
diff mbox series

Patch

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 324a4b20fba9..fdde80d95966 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -313,10 +313,11 @@  enum {
 
 #define AZX_DCAPS_INTEL_SKYLAKE \
 	(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
-	 AZX_DCAPS_SYNC_WRITE |\
 	 AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
 
-#define AZX_DCAPS_INTEL_BROXTON		AZX_DCAPS_INTEL_SKYLAKE
+#define AZX_DCAPS_INTEL_BROXTON \
+	(AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\
+	 AZX_DCAPS_SEPARATE_STREAM_TAG | AZX_DCAPS_I915_COMPONENT)
 
 /* quirks for ATI SB / AMD Hudson */
 #define AZX_DCAPS_PRESET_ATI_SB \