RE: [PATCH i-g-t v5 2/2] tests/kms_content_protection: Handle EDID lookup failures

Kandpal, Suraj
2026-03-19T10:51:10Z

> Subject: [PATCH i-g-t v5 2/2] tests/kms_content_protection: Handle EDID
> lookup failures
>
> During output selection, connectors may disconnect or AUX reads may
> timeout. In that cases, EDID blob read fails instead of assert log the failure so
> test dont asserts.

Does not make sense to have sudden connectors disconnection when you are just reading EDID.
The only time this happens is you are trying to ready when Connector does not have a CRTC.
Needs to be investigated more.
I suggest you do not add this to the current patch otherwise this will hold up the previous patch

Regards,
Suraj Kandpal
>
> Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati@intel.com>
> ---
> tests/kms_content_protection.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index caf3d7a56..006aeb510 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -683,13 +683,24 @@ static bool
> is_output_hdcp_test_exempt(igt_output_t *output)
> const struct edid *edid;
> char edid_vendor[4];
> char sink_name[20];
> + bool ok;
> +
> + ok = kmstest_get_property(data.drm_fd,
> + output->config.connector->connector_id,
> + DRM_MODE_OBJECT_CONNECTOR, "EDID",
> NULL,
> + &edid_blob_id, NULL);
> + if (!ok || !edid_blob_id) {
> + igt_debug("Unable to get EDID blob id for %s\n",
> + output->name);
> + return false;
> + }
>
> - igt_assert(kmstest_get_property(data.drm_fd,
> - output->config.connector-
> >connector_id,
> - DRM_MODE_OBJECT_CONNECTOR,
> "EDID", NULL,
> - &edid_blob_id, NULL));
> -
> - igt_assert(edid_blob = drmModeGetPropertyBlob(data.drm_fd,
> edid_blob_id));
> + edid_blob = drmModeGetPropertyBlob(data.drm_fd, edid_blob_id);
> + if (!edid_blob) {
> + igt_debug("Unable to fetch EDID blob for %s (blob id=%"
> PRIu64 ")\n",
> + output->name, edid_blob_id);
> + return false;
> + }
>
> edid = (const struct edid *)edid_blob->data;
> edid_get_mfg(edid, edid_vendor);
> @@ -724,7 +735,6 @@ static int get_hdcp_outputs(igt_display_t *display, int
> content_type,
> continue;
> }
>
> -
> if (count < MAX_HDCP_OUTPUTS)
> hdcp_outputs[count++] = output;
> }
> --
> 2.34.1