[igt-dev] [PATCH i-g-t v6 7/8] kms_content_protection: SRM Testing
Shankar, Uma
uma.shankar at intel.com
Mon May 6 11:40:28 UTC 2019
>-----Original Message-----
>From: igt-dev [mailto:igt-dev-bounces at lists.freedesktop.org] On Behalf Of
>Ramalingam C
>Sent: Thursday, May 2, 2019 6:46 PM
>To: igt-dev at lists.freedesktop.org; Vetter, Daniel <daniel.vetter at intel.com>; Hiler,
>Arkadiusz <arkadiusz.hiler at intel.com>
>Subject: [igt-dev] [PATCH i-g-t v6 7/8] kms_content_protection: SRM Testing
>
>Since we dont any uAPI to retrieve the downstream's device's ksv, we can't check the
Change "don't" to "Don’t' have."
>real revocation through SRM.
>
>This test just writes the facsimile SRM into the /lib/firmware/ and check the kernel
>parsing of it by invoking the hdc authentication.
Typo in hdcp
With above fixed:
Reviewed-by: Uma Shankar <uma.shankar at intel.com>
>
>Signed-off-by: Ramalingam C <ramalingam.c at intel.com>
>Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>---
> tests/kms_content_protection.c | 44 ++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
>diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index
>cc8abda48702..f440358c29c5 100644
>--- a/tests/kms_content_protection.c
>+++ b/tests/kms_content_protection.c
>@@ -65,6 +65,12 @@ struct data {
> #define KERNEL_DISABLE_TIME_ALLOWED_MSEC (1 * 1000)
> #define FLIP_EVENT_POLLING_TIMEOUT_MSEC 1000
>
>+__u8 facsimile_srm[] = {
>+ 0x80, 0x0, 0x0, 0x05, 0x01, 0x0, 0x0, 0x36, 0x02, 0x51, 0x1E, 0xF2,
>+ 0x1A, 0xCD, 0xE7, 0x26, 0x97, 0xF4, 0x01, 0x97, 0x10, 0x19, 0x92, 0x53,
>+ 0xE9, 0xF0, 0x59, 0x95, 0xA3, 0x7A, 0x3B, 0xFE, 0xE0, 0x9C, 0x76, 0xDD,
>+ 0x83, 0xAA, 0xC2, 0x5B, 0x24, 0xB3, 0x36, 0x84, 0x94, 0x75, 0x34, 0xDB,
>+ 0x10, 0x9E, 0x3B, 0x23, 0x13, 0xD8, 0x7A, 0xC2, 0x30, 0x79, 0x84};
>
> static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
> unsigned int tv_usec, void *_data)
>@@ -420,6 +426,26 @@ static void test_cp_lic(igt_output_t *output)
> igt_assert_f(!ret, "Content Protection LIC Failed\n"); }
>
>+static bool write_srm_as_fw(const __u8 *srm, int len) {
>+ int fd, ret, total = 0;
>+
>+ fd = open("/lib/firmware/display_hdcp_srm.bin", O_WRONLY | O_CREAT);
>+ do {
>+ ret = write(fd, srm + total, len - total);
>+ if (ret < 0)
>+ ret = -errno;
>+ if (ret == -EINTR || ret == -EAGAIN)
>+ continue;
>+ if (ret <= 0)
>+ break;
>+ total += ret;
>+ } while (total != len);
>+ close(fd);
>+
>+ return total < len ? false : true;
>+}
>+
> static void test_content_protection_on_output(igt_output_t *output,
> enum igt_commit_style s,
> int content_type)
>@@ -638,6 +664,24 @@ igt_main
> test_content_protection(COMMIT_ATOMIC,
>HDCP_CONTENT_TYPE_0);
> }
>
>+ /*
>+ * Testing the revocation check through SRM needs a HDCP sink with
>+ * programmable Ksvs or we need a uAPI from kernel to read the
>+ * connected HDCP sink's Ksv. With that we would be able to add that
>+ * Ksv into a SRM and send in for revocation check. Since we dont have
>+ * either of these options, we test SRM writing from userspace and
>+ * validation of the same at kernel. Something is better than nothing.
>+ */
>+ igt_subtest("srm") {
>+ bool ret;
>+
>+ igt_require(data.display.is_atomic);
>+ ret = write_srm_as_fw((const __u8 *)facsimile_srm,
>+ sizeof(facsimile_srm));
>+ igt_assert_f(ret, "SRM update failed");
>+ test_content_protection(COMMIT_ATOMIC,
>HDCP_CONTENT_TYPE_0);
>+ }
>+
> igt_fixture
> igt_display_fini(&data.display);
> }
>--
>2.19.1
>
>_______________________________________________
>igt-dev mailing list
>igt-dev at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/igt-dev
More information about the igt-dev
mailing list