[PATCH] ALSA: pcm_drm_eld: rate-limit ELD parsing errors

From: Sav

Date: Fri May 15 2026 - 12:17:39 EST


From: Sav <62543096+dongioia@xxxxxxxxxxxxxxxxxxxxxxxx>

snd_parse_eld() is the generic helper used by ASoC hdmi-codec, equivalent
to the hdac_hdmi parse path Mark Brown rate-limited in
lkml.kernel.org/lkml/2025/6/13/1380. The same spam shows up here for the
same reason.

When a HDMI sink is not connected (for example a board with two HDMI
outputs and a cable in only one of them), userspace audio servers like
PipeWire keep opening the empty card. snd_parse_eld() then logs

HDMI: Unknown ELD version 0

on every retry. On rk3588 that easily produces 30+ messages per burst.
A malformed ELD (MNL out of range) hits the same code path. Neither is
worth a separate dev_info() per occurrence; switch both to
dev_info_ratelimited().

Signed-off-by: Sav <62543096+dongioia@xxxxxxxxxxxxxxxxxxxxxxxx>
---
sound/core/pcm_drm_eld.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/core/pcm_drm_eld.c b/sound/core/pcm_drm_eld.c
index cb2eebaac85f..1941ee520063 100644
--- a/sound/core/pcm_drm_eld.c
+++ b/sound/core/pcm_drm_eld.c
@@ -334,7 +334,7 @@ int snd_parse_eld(struct device *dev, struct snd_parsed_hdmi_eld *e,
e->eld_ver = GRAB_BITS(buf, 0, 3, 5);
if (e->eld_ver != ELD_VER_CEA_861D &&
e->eld_ver != ELD_VER_PARTIAL) {
- dev_info(dev, "HDMI: Unknown ELD version %d\n", e->eld_ver);
+ dev_info_ratelimited(dev, "HDMI: Unknown ELD version %d\n", e->eld_ver);
goto out_fail;
}

@@ -357,7 +357,7 @@ int snd_parse_eld(struct device *dev, struct snd_parsed_hdmi_eld *e,
e->product_id = get_unaligned_le16(buf + 18);

if (mnl > ELD_MAX_MNL) {
- dev_info(dev, "HDMI: MNL is reserved value %d\n", mnl);
+ dev_info_ratelimited(dev, "HDMI: MNL is reserved value %d\n", mnl);
goto out_fail;
} else if (ELD_FIXED_BYTES + mnl > size) {
dev_info(dev, "HDMI: out of range MNL %d\n", mnl);
--
2.54.0