]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
authorMark Brown <broonie@kernel.org>
Fri, 13 Jun 2025 16:41:04 +0000 (17:41 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 22 Jun 2025 23:26:54 +0000 (00:26 +0100)
We currently log parse failures for ELD data and some disconnection events
as errors without rate limiting. These log messages can be triggered very
frequently in some situations, especially ELD parsing when there is nothing
connected to a HDMI port which will generate:

hdmi-audio-codec hdmi-audio-codec.1.auto: HDMI: Unknown ELD version 0

While there's doubtless work that could be done on reducing the number of
connection notification callbacks it's possible these may be legitimately
generated by poor quality physical connections so let's use rate limiting
to mitigate the log spam for the parse errors and lower the severity for
disconnect logging to debug level.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://patch.msgid.link/20250613-asoc-hdmi-eld-logging-v1-1-76d64154d969@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/hdac_hdmi.c

index e05f0bf91fa524db6af1706f3f38f0d4694185d4..3aae0a2eb047a5fc93f8a6823745e5f16b4002e0 100644 (file)
@@ -1231,7 +1231,8 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev,
                                                >> DRM_ELD_VER_SHIFT;
 
        if (ver != ELD_VER_CEA_861D && ver != ELD_VER_PARTIAL) {
-               dev_err(&hdev->dev, "HDMI: Unknown ELD version %d\n", ver);
+               dev_err_ratelimited(&hdev->dev,
+                                   "HDMI: Unknown ELD version %d\n", ver);
                return -EINVAL;
        }
 
@@ -1239,7 +1240,8 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev,
                DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT;
 
        if (mnl > ELD_MAX_MNL) {
-               dev_err(&hdev->dev, "HDMI: MNL Invalid %d\n", mnl);
+               dev_err_ratelimited(&hdev->dev,
+                                   "HDMI: MNL Invalid %d\n", mnl);
                return -EINVAL;
        }
 
@@ -1298,8 +1300,8 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin,
 
        if (!port->eld.monitor_present || !port->eld.eld_valid) {
 
-               dev_err(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
-                                               __func__, pin->nid, port->id);
+               dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
+                       __func__, pin->nid, port->id);
 
                /*
                 * PCMs are not registered during device probe, so don't