[PATCH i-g-t v3] tests/kms_content_protection: Add a test for HDCP-MST with suspend resume
Thasleem, Mohammed
mohammed.thasleem at intel.com
Wed Jul 16 14:50:20 UTC 2025
On 7/2/2025 9:07 AM, Santhosh Reddy Guddati wrote:
> From: Jeevan B <jeevan.b at intel.com>
>
> adding new test to validate HDCP-MST with suspend resume
> test check for valid output which supports MST and HDCP
> then commits and check if the content protection is enabled
> before and after suspend-resume.
>
> v2: Change type-0 to type-1, try to authenticate hdcp few more times
> as suggested. (Suraj)
>
> v3: Add a new test for suspend-resume non-mst.
> Added suspend-resume handling to existing mst and non-mst test paths
> Updated test description and documentation.
>
> Signed-off-by: Jeevan B <jeevan.b at intel.com>
> Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati at intel.com>
> ---
> tests/kms_content_protection.c | 38 ++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 51fc1d3be..d17d1702b 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -74,6 +74,7 @@
> * @atomic-dpms: DPMS ON/OFF during atomic modesetting.
> * @legacy: legacy style commit
> * @type1: content type 1 that can be handled only through HDCP2.2.
> + * @suspend-resume: Suspend and resume the system
> */
>
> /**
> @@ -86,6 +87,7 @@
> * @lic-type-1: Type 1 with LIC.
> * @type-0: Type 0
> * @type-1: Type 1
> + * @suspend-resume: Suspend and resume the system
> */
>
> IGT_TEST_DESCRIPTION("Test content protection (HDCP)");
> @@ -104,6 +106,7 @@ struct data {
> #define CP_MEI_RELOAD (1 << 2)
> #define CP_TYPE_CHANGE (1 << 3)
> #define CP_UEVENT (1 << 4)
> +#define SUSPEND_RESUME (1 << 5)
>
> #define CP_UNDESIRED 0
> #define CP_DESIRED 1
> @@ -479,6 +482,18 @@ static void test_content_protection_on_output(igt_output_t *output,
> content_type, false,
> false);
> }
> +
> + if (data.cp_tests & SUSPEND_RESUME) {
> + igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + ret = wait_for_prop_value(output, CP_ENABLED,
> + KERNEL_AUTH_TIME_ALLOWED_MSEC);
> + if (!ret)
> + test_cp_enable_with_retry(output, commit_style, 2,
> + content_type, false,
> + false);
> + }
> }
>
> static void __debugfs_read(int fd, const char *param, char *buf, int len)
> @@ -813,6 +828,18 @@ test_content_protection_mst(int content_type)
>
> test_mst_cp_enable_with_retry(hdcp_mst_output, valid_outputs, 2, content_type);
>
> + if (data.cp_tests & SUSPEND_RESUME) {
> + igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
> + igt_display_commit2(display, COMMIT_ATOMIC);
--> Do we need this commit, kernel should automatically restore the
display state after suspend/resume. Please recheck it once...> +
> + ret = wait_for_prop_value(hdcp_mst_output[0],
> + CP_ENABLED,
> + KERNEL_AUTH_TIME_ALLOWED_MSEC);
> + if (!ret)
> + test_mst_cp_enable_with_retry(hdcp_mst_output, valid_outputs,
> + 2, content_type);
> + }
> +
> if (data.cp_tests & CP_LIC)
> test_cp_lic_on_mst(hdcp_mst_output, valid_outputs, 0);
>
> @@ -833,6 +860,7 @@ test_content_protection_mst(int content_type)
> test_cp_lic_on_mst(hdcp_mst_output, valid_outputs, 1);
> }
>
> +
> static void test_content_protection_cleanup(void)
> {
> igt_display_t *display = &data.display;
> @@ -941,6 +969,11 @@ static const struct {
> .cp_tests = 0,
> .content_type = HDCP_CONTENT_TYPE_0,
> },
> + {.desc = "Test to verify the behaviour of HDCP after suspend resume cycles.",
> + .name = "suspend-resume",
> + .cp_tests = SUSPEND_RESUME,
> + .content_type = HDCP_CONTENT_TYPE_0,
> + }
> };
>
> static const struct {
> @@ -969,6 +1002,11 @@ static const struct {
> .cp_tests = CP_LIC,
> .content_type = HDCP_CONTENT_TYPE_1,
> },
> + { .desc = "Test Content protection(Type 1) over DP MST with suspend resume.",
> + .name = "dp-mst-suspend-resume",
> + .cp_tests = SUSPEND_RESUME,
> + .content_type = HDCP_CONTENT_TYPE_1,
> + },
> };
>
> igt_main
More information about the igt-dev
mailing list