Re: [igt-dev] [PATCH i-g-t 3/3] kms_content_protection: Confirm that LIC is passed

C, Ramalingam
2019-02-07T19:02:49Z

On 2/7/2019 10:36 PM, Daniel Vetter wrote:
> On Thu, Feb 07, 2019 at 09:53:22PM +0530, Ramalingam C wrote:
>> Once the HDCP is enabled, kernel will run the link integrity check(LIC)
>> atleast once in 2Secs based on the HDCP versions.
>>
>> So to confirm the link integrity check is passed, we oberve that HDCP
>> state remains ENABLED for next 4Secs.
>>
>> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>> ---
>> tests/kms_content_protection.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
>> index 895e9e8d8b11..7a6450539f5d 100644
>> --- a/tests/kms_content_protection.c
>> +++ b/tests/kms_content_protection.c
>> @@ -214,6 +214,14 @@ static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
>> return true;
>> }
>>
>> +static void test_cp_lic(igt_output_t *output)
>> +{
>> + bool ret;
>> +
>> + /* Wait for 4Secs (min 2 cycles of Link Integrity Check) */
>> + ret = wait_for_prop_value(output, 1, 4 * 1000);
> Hm, shouldn't we do an unconditionaly sleep for 4s, and _then_ recheck
> that content protection is still on? Otherwise I think this will succeed
> immediately.
This wont as we are monitoring for DESIRED state till 4Sec.
This will help us to quit as soon as link is broken instead of waiting
for 4Sec completely.
>
> Also wondering whether we should make this a new subtest, using the flag
> idea I described for patch 2. There's ofc some overlap, but that's hard to
> avoid with black box testing like we do in igt.
But LIC is part of HDCP enablement. Should be part of HDCP_enable than a
separate subtest.
I prefer not to make it as separate subtest.

--Ram
> -Daniel
>
>> + igt_assert_f(!ret, "Content Protection LIC Failed\n");
>> +}
>>
>> static void test_content_protection_on_output(igt_output_t *output,
>> enum igt_commit_style s)
>> @@ -237,6 +245,7 @@ static void test_content_protection_on_output(igt_output_t *output,
>>
>> modeset_with_fb(pipe, output, s);
>> test_cp_enable_with_retry(output, s, 3);
>> + test_cp_lic(output);
>> test_cp_disable(output, s);
>>
>> primary = igt_output_get_plane_type(output,
>> --
>> 2.7.4
>>