* [igt-dev] [PATCH i-g-t v2 1/5] kms_content_protection: Content type support
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
@ 2019-03-08 16:30 ` Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 2/5] kms_content_protection: test teardown and rebuild of I915-mei I/F Ramalingam C
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Ramalingam C @ 2019-03-08 16:30 UTC (permalink / raw)
To: igt-dev, daniel.vetter
Adds a connector property called "CP_Content_Type"
Content Type takes two values which classifies the content stream:
Type 0: Stream that can be tranmitted on HDCP1.4/HDCP2.2
Type 1: Stream that needs HDCP2.2 encryption only.
So when Type 1 is set KMD is forced to enable HDCP2.2 only.
For Type 0 request, Kernel chooses the highest capable HDCP version
(v2.2) first. If that fails, then it fall back to the next availble
version(v1.4) before abondoning HDCP autehntication attempts.
Please note content_type is allowed to be updated when "Content
Protection" is in UNDESIRED state.
v2:
s/cp_content_type/content_ptotection_type [danvet]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
lib/igt_kms.c | 1 +
lib/igt_kms.h | 1 +
tests/kms_content_protection.c | 72 ++++++++++++++++++++++++++++------
3 files changed, 61 insertions(+), 13 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 7ebab4ca186f..d30741f747e7 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -199,6 +199,7 @@ const char * const igt_connector_prop_names[IGT_NUM_CONNECTOR_PROPS] = {
[IGT_CONNECTOR_BROADCAST_RGB] = "Broadcast RGB",
[IGT_CONNECTOR_CONTENT_PROTECTION] = "Content Protection",
[IGT_CONNECTOR_VRR_CAPABLE] = "vrr_capable",
+ [IGT_CONNECTOR_CP_CONTENT_TYPE] = "Content_protection_type",
};
/*
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index a29ad7836465..59cda36ecd21 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -123,6 +123,7 @@ enum igt_atomic_connector_properties {
IGT_CONNECTOR_BROADCAST_RGB,
IGT_CONNECTOR_CONTENT_PROTECTION,
IGT_CONNECTOR_VRR_CAPABLE,
+ IGT_CONNECTOR_CP_CONTENT_TYPE,
IGT_NUM_CONNECTOR_PROPS
};
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 7fc8542e769a..00784e2a5f01 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -40,6 +40,13 @@ struct data {
#define CP_DESIRED 1
#define CP_ENABLED 2
+/*
+ * CP_TYPE_0 can be handled on both HDCP1.4 and HDCP2.2. Where as CP_TYPE_1
+ * can be handled only through HDCP2.2.
+ */
+#define CP_TYPE_0 0
+#define CP_TYPE_1 1
+
#define LIC_PERIOD_MSEC (4 * 1000)
/* Kernel retry count=3, Max time per authentication allowed = 6Sec */
#define KERNEL_AUTH_TIME_ALLOWED_MSEC (3 * 6 * 1000)
@@ -155,7 +162,8 @@ static void modeset_with_fb(const enum pipe pipe, igt_output_t *output,
commit_display_and_wait_for_flip(s);
}
-static bool test_cp_enable(igt_output_t *output, enum igt_commit_style s)
+static bool test_cp_enable(igt_output_t *output, enum igt_commit_style s,
+ int content_type)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -165,6 +173,9 @@ static bool test_cp_enable(igt_output_t *output, enum igt_commit_style s)
igt_output_set_prop_value(output,
IGT_CONNECTOR_CONTENT_PROTECTION, CP_DESIRED);
+ if (output->props[IGT_CONNECTOR_CP_CONTENT_TYPE])
+ igt_output_set_prop_value(output, IGT_CONNECTOR_CP_CONTENT_TYPE,
+ content_type);
igt_display_commit2(display, s);
ret = wait_for_prop_value(output, CP_ENABLED,
@@ -201,13 +212,14 @@ static void test_cp_disable(igt_output_t *output, enum igt_commit_style s)
}
static void test_cp_enable_with_retry(igt_output_t *output,
- enum igt_commit_style s, int retry)
+ enum igt_commit_style s, int retry,
+ int content_type)
{
bool ret;
do {
test_cp_disable(output, s);
- ret = test_cp_enable(output, s);
+ ret = test_cp_enable(output, s, content_type);
if (!ret && --retry)
igt_debug("Retry (%d/2) ...\n", 3 - retry);
@@ -237,7 +249,7 @@ static void test_cp_lic(igt_output_t *output)
static void test_content_protection_on_output(igt_output_t *output,
enum igt_commit_style s,
- bool dpms_test)
+ bool dpms_test, int content_type)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -258,7 +270,7 @@ static void test_content_protection_on_output(igt_output_t *output,
continue;
modeset_with_fb(pipe, output, s);
- test_cp_enable_with_retry(output, s, 3);
+ test_cp_enable_with_retry(output, s, 3, content_type);
test_cp_lic(output);
if (dpms_test) {
@@ -273,7 +285,8 @@ static void test_content_protection_on_output(igt_output_t *output,
ret = wait_for_prop_value(output, CP_ENABLED,
KERNEL_AUTH_TIME_ALLOWED_MSEC);
if (!ret)
- test_cp_enable_with_retry(output, s, 2);
+ test_cp_enable_with_retry(output, s,
+ 2, content_type);
}
test_cp_disable(output, s);
@@ -300,7 +313,8 @@ static void __debugfs_read(int fd, const char *param, char *buf, int len)
#define debugfs_read(fd, p, arr) __debugfs_read(fd, p, arr, sizeof(arr))
-#define MAX_SINK_HDCP_CAP_BUF_LEN 500
+#define MAX_SINK_HDCP_CAP_BUF_LEN 5000
+
static bool sink_hdcp_capable(igt_output_t *output)
{
char buf[MAX_SINK_HDCP_CAP_BUF_LEN];
@@ -318,9 +332,26 @@ static bool sink_hdcp_capable(igt_output_t *output)
return strstr(buf, "HDCP1.4");
}
+static bool sink_hdcp2_capable(igt_output_t *output)
+{
+ char buf[MAX_SINK_HDCP_CAP_BUF_LEN];
+ int fd;
+
+ fd = igt_debugfs_connector_dir(data.drm_fd, output->name, O_RDONLY);
+ if (fd < 0)
+ return false;
+
+ debugfs_read(fd, "i915_hdcp_sink_capability", buf);
+ close(fd);
+
+ igt_debug("Sink capability: %s\n", buf);
+
+ return strstr(buf, "HDCP2.2");
+}
static void
-test_content_protection(enum igt_commit_style s, bool dpms_test)
+test_content_protection(enum igt_commit_style s, bool dpms_test,
+ int content_type)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -330,14 +361,24 @@ test_content_protection(enum igt_commit_style s, bool dpms_test)
if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
continue;
+ if (!output->props[IGT_CONNECTOR_CP_CONTENT_TYPE] &&
+ content_type)
+ continue;
+
igt_info("CP Test execution on %s\n", output->name);
- if (!sink_hdcp_capable(output)) {
+
+ if (content_type && !sink_hdcp2_capable(output)) {
+ igt_info("\tSkip %s (Sink has no HDCP2.2 support)\n",
+ output->name);
+ continue;
+ } else if (!sink_hdcp_capable(output)) {
igt_info("\tSkip %s (Sink has no HDCP support)\n",
output->name);
continue;
}
- test_content_protection_on_output(output, s, dpms_test);
+ test_content_protection_on_output(output, s, dpms_test,
+ content_type);
valid_tests++;
}
@@ -355,16 +396,21 @@ igt_main
}
igt_subtest("legacy")
- test_content_protection(COMMIT_LEGACY, false);
+ test_content_protection(COMMIT_LEGACY, false, CP_TYPE_0);
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, false);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_0);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, true);
+ test_content_protection(COMMIT_ATOMIC, true, CP_TYPE_0);
+ }
+
+ igt_subtest("Type1") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1);
}
igt_fixture
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 8+ messages in thread* [igt-dev] [PATCH i-g-t v2 2/5] kms_content_protection: test teardown and rebuild of I915-mei I/F
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 1/5] kms_content_protection: Content type support Ramalingam C
@ 2019-03-08 16:30 ` Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 3/5] kms_content_protection: srm and downstream_info test Ramalingam C
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Ramalingam C @ 2019-03-08 16:30 UTC (permalink / raw)
To: igt-dev, daniel.vetter
To validate the teardown and rebuild of the interface between
I915 and mei hdcp this subtest execute the below sequence:
1. Test HDCP2.2 Type 1 (expected to pass)
2. Unload the mei_hdcp
3. Test HDCP2.2 Type 1 (expected to fail)
2. Reload the mei_hdcp
1. Test HDCP2.2 Type 1 (expected to pass)
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
tests/kms_content_protection.c | 67 +++++++++++++++++++++++++++-------
1 file changed, 53 insertions(+), 14 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 00784e2a5f01..4563a6067a32 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -27,6 +27,7 @@
#include "igt.h"
#include "igt_sysfs.h"
#include "igt_kms.h"
+#include "igt_kmod.h"
IGT_TEST_DESCRIPTION("Test content protection (HDCP)");
@@ -213,7 +214,7 @@ static void test_cp_disable(igt_output_t *output, enum igt_commit_style s)
static void test_cp_enable_with_retry(igt_output_t *output,
enum igt_commit_style s, int retry,
- int content_type)
+ int content_type, bool expect_failure)
{
bool ret;
@@ -224,7 +225,12 @@ static void test_cp_enable_with_retry(igt_output_t *output,
if (!ret && --retry)
igt_debug("Retry (%d/2) ...\n", 3 - retry);
} while (retry && !ret);
- igt_assert_f(ret, "Content Protection not enabled\n");
+
+ if (expect_failure)
+ igt_assert_f(!ret,
+ "CP Enabled. Though it is expected to fail\n");
+ else
+ igt_assert_f(ret, "Content Protection not enabled\n");
}
static bool igt_pipe_is_free(igt_display_t *display, enum pipe pipe)
@@ -247,9 +253,10 @@ static void test_cp_lic(igt_output_t *output)
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,
- bool dpms_test, int content_type)
+static void
+test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
+ bool dpms_test, int content_type,
+ bool mei_reload_test)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -270,7 +277,24 @@ static void test_content_protection_on_output(igt_output_t *output,
continue;
modeset_with_fb(pipe, output, s);
- test_cp_enable_with_retry(output, s, 3, content_type);
+ test_cp_enable_with_retry(output, s, 3, content_type, false);
+
+ if (mei_reload_test) {
+ igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
+ "mei_hdcp unload failed");
+
+ /* Expected to fail */
+ test_cp_enable_with_retry(output, s, 3,
+ content_type, false, true);
+
+ igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
+ "mei_hdcp load failed");
+
+ /* Expected to pass */
+ test_cp_enable_with_retry(output, s, 3,
+ content_type, false, false);
+ }
+
test_cp_lic(output);
if (dpms_test) {
@@ -285,8 +309,8 @@ static void test_content_protection_on_output(igt_output_t *output,
ret = wait_for_prop_value(output, CP_ENABLED,
KERNEL_AUTH_TIME_ALLOWED_MSEC);
if (!ret)
- test_cp_enable_with_retry(output, s,
- 2, content_type);
+ test_cp_enable_with_retry(output, s, 2,
+ content_type, false);
}
test_cp_disable(output, s);
@@ -351,12 +375,16 @@ static bool sink_hdcp2_capable(igt_output_t *output)
static void
test_content_protection(enum igt_commit_style s, bool dpms_test,
- int content_type)
+ int content_type, bool mei_reload_test)
{
igt_display_t *display = &data.display;
igt_output_t *output;
int valid_tests = 0;
+ if (mei_reload_test)
+ igt_require_f(igt_kmod_is_loaded("mei_hdcp"),
+ "mei_hdcp module is not loaded\n");
+
for_each_connected_output(display, output) {
if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
continue;
@@ -378,7 +406,8 @@ test_content_protection(enum igt_commit_style s, bool dpms_test,
}
test_content_protection_on_output(output, s, dpms_test,
- content_type);
+ content_type,
+ mei_reload_test);
valid_tests++;
}
@@ -396,21 +425,31 @@ igt_main
}
igt_subtest("legacy")
- test_content_protection(COMMIT_LEGACY, false, CP_TYPE_0);
+ test_content_protection(COMMIT_LEGACY, false, CP_TYPE_0,
+ false);
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_0);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_0,
+ false);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, true, CP_TYPE_0);
+ test_content_protection(COMMIT_ATOMIC, true, CP_TYPE_0,
+ false);
}
igt_subtest("Type1") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
+ false);
+ }
+
+ igt_subtest("type1_mei_interface") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
+ true);
}
igt_fixture
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 8+ messages in thread* [igt-dev] [PATCH i-g-t v2 3/5] kms_content_protection: srm and downstream_info test
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 1/5] kms_content_protection: Content type support Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 2/5] kms_content_protection: test teardown and rebuild of I915-mei I/F Ramalingam C
@ 2019-03-08 16:30 ` Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 4/5] kms_content_protection: test content type change Ramalingam C
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Ramalingam C @ 2019-03-08 16:30 UTC (permalink / raw)
To: igt-dev, daniel.vetter
Retrieve the downstream info and use that to stitch a srm and
verify the revocation process.
Adds a connector properties called CP_downstream_info
SRM stitched here is polluted. Kernel trusts the userspace to validate
the SRM integrity through DCP signature. Actually this test exploits
that trust to test SRM and downstream_info features.
HDCP1.4 BKSV and HDCP2.2 receiver id of a HDCP sink is different. So we
need to force the KMD to use a single HDCP version across
downstream_info gathering and SRM setting and verifying teh revocation
process. So Type 1 is used.
v2:
binary sysfs is used to write the srm into kernel [Daniel]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
lib/igt_kms.c | 1 +
lib/igt_kms.h | 1 +
tests/kms_content_protection.c | 211 +++++++++++++++++++++++++++++++--
3 files changed, 201 insertions(+), 12 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index d30741f747e7..01320a9b7c40 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -200,6 +200,7 @@ const char * const igt_connector_prop_names[IGT_NUM_CONNECTOR_PROPS] = {
[IGT_CONNECTOR_CONTENT_PROTECTION] = "Content Protection",
[IGT_CONNECTOR_VRR_CAPABLE] = "vrr_capable",
[IGT_CONNECTOR_CP_CONTENT_TYPE] = "Content_protection_type",
+ [IGT_CONNECTOR_CP_DOWNSTREAM_INFO] = "CP_downstream_info",
};
/*
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 59cda36ecd21..d0d0420298e7 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -124,6 +124,7 @@ enum igt_atomic_connector_properties {
IGT_CONNECTOR_CONTENT_PROTECTION,
IGT_CONNECTOR_VRR_CAPABLE,
IGT_CONNECTOR_CP_CONTENT_TYPE,
+ IGT_CONNECTOR_CP_DOWNSTREAM_INFO,
IGT_NUM_CONNECTOR_PROPS
};
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 4563a6067a32..3d2a01db277b 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -55,6 +55,116 @@ struct data {
#define FLIP_EVENT_POLLING_TIMEOUT_MSEC 1000
+#define DRM_MODE_HDCP_KSV_LEN 5
+#define DRM_MODE_HDCP_MAX_DEVICE_CNT 127
+
+#define DRM_MODE_HDCP14_IN_FORCE (1<<0)
+#define DRM_MODE_HDCP22_IN_FORCE (1<<1)
+
+struct cp_downstream_info {
+
+ /* HDCP ver in force */
+ __u32 ver_in_force;
+ __u8 content_type;
+
+ /* KSV of immediate HDCP Sink. In Little-Endian Format. */
+ char bksv[DRM_MODE_HDCP_KSV_LEN];
+
+ /* Whether Immediate HDCP sink is a repeater? */
+ bool is_repeater;
+
+ /* Depth received from immediate downstream repeater */
+ __u8 depth;
+
+ /* Device count received from immediate downstream repeater */
+ __u32 device_count;
+
+ /*
+ * Max buffer required to hold ksv list received from immediate
+ * repeater. In this array first device_count * DRM_MODE_HDCP_KSV_LEN
+ * will hold the valid ksv bytes.
+ * If authentication specification is
+ * HDCP1.4 - each KSV's Bytes will be in Little-Endian format.
+ * HDCP2.2 - each KSV's Bytes will be in Big-Endian format.
+ */
+ char ksv_list[DRM_MODE_HDCP_KSV_LEN * DRM_MODE_HDCP_MAX_DEVICE_CNT];
+};
+
+
+__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 parse_downstream_info(struct cp_downstream_info *ds_info)
+{
+ char *ksvs;
+ int i;
+
+ if (ds_info->ver_in_force & DRM_MODE_HDCP14_IN_FORCE)
+ igt_info("HDCP1.4 is Enabled\n");
+ else if (ds_info->ver_in_force & DRM_MODE_HDCP22_IN_FORCE)
+ igt_info("HDCP2.2 is Enabled. Type%d\n",
+ ds_info->content_type & CP_TYPE_1 ?
+ 1 : 0);
+ else
+ return;
+
+ igt_info("\tReceiver ID: %#04x %#04x %#04x %#04x %#04x\n",
+ ds_info->bksv[0] & 0xFF, ds_info->bksv[1] & 0xFF,
+ ds_info->bksv[2] & 0xFF, ds_info->bksv[3] & 0xFF,
+ ds_info->bksv[4] & 0xFF);
+
+ if (ds_info->is_repeater) {
+ igt_info("\tHDCP sink is a Repeater\n");
+
+ igt_info("\tDepth: %d, Device count: %d\n", ds_info->depth,
+ ds_info->device_count);
+ ksvs = ds_info->ksv_list;
+
+ for (i = 0; i < ds_info->device_count; i++) {
+ igt_info("\tksv-%d: %#04x %#04x %#04x %#04x %#04x\n", i,
+ ksvs[0] & 0xFF, ksvs[1] & 0xFF,
+ ksvs[2] & 0xFF, ksvs[3] & 0xFF,
+ ksvs[4] & 0xFF);
+ ksvs += DRM_MODE_HDCP_KSV_LEN;
+ }
+ } else {
+ igt_info("\tHDCP sink is a Receiver\n");
+ }
+}
+
+static void retrieve_downstream_info_prepare_srm(igt_output_t *output)
+{
+ drmModePropertyBlobRes *ds_info_prop = NULL;
+ uint64_t downstream_blob_id;
+ struct cp_downstream_info *ds_info;
+ int i;
+
+ igt_info("CP_downstream_info property is attached\n");
+
+ downstream_blob_id = igt_output_get_prop(output,
+ IGT_CONNECTOR_CP_DOWNSTREAM_INFO);
+
+ igt_assert_f(downstream_blob_id,
+ "Invalid downstream blob id\n");
+
+ ds_info_prop = drmModeGetPropertyBlob(data.drm_fd,
+ downstream_blob_id);
+
+ igt_assert(ds_info_prop);
+ igt_assert_eq(ds_info_prop->length,
+ sizeof(struct cp_downstream_info));
+ ds_info = ds_info_prop->data;
+
+ parse_downstream_info(ds_info);
+
+ for (i = 0; i < 5; i++)
+ facsimile_srm[i + 9] = ds_info->bksv[i];
+}
+
static void flip_handler(int fd, unsigned int sequence, unsigned int tv_sec,
unsigned int tv_usec, void *_data)
{
@@ -214,7 +324,8 @@ static void test_cp_disable(igt_output_t *output, enum igt_commit_style s)
static void test_cp_enable_with_retry(igt_output_t *output,
enum igt_commit_style s, int retry,
- int content_type, bool expect_failure)
+ int content_type, bool expect_failure,
+ bool test_srm)
{
bool ret;
@@ -229,6 +340,9 @@ static void test_cp_enable_with_retry(igt_output_t *output,
if (expect_failure)
igt_assert_f(!ret,
"CP Enabled. Though it is expected to fail\n");
+ else if (test_srm)
+ igt_assert_f(!ret,
+ "CP Enabled. Though ID is revoked through SRM\n");
else
igt_assert_f(ret, "Content Protection not enabled\n");
}
@@ -253,15 +367,30 @@ static void test_cp_lic(igt_output_t *output)
igt_assert_f(!ret, "Content Protection LIC Failed\n");
}
+static bool write_srm_into_sysfs(const char *srm, int len)
+{
+ int fd;
+ bool ret = false;
+
+ fd = igt_sysfs_open(data.drm_fd, NULL);
+ if (fd > 0) {
+ if (igt_sysfs_write(fd, "hdcp_srm", srm, len) == len)
+ ret = true;
+ close(fd);
+ }
+ return ret;
+}
+
static void
test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
bool dpms_test, int content_type,
- bool mei_reload_test)
+ bool mei_reload_test, bool test_srm)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
enum pipe pipe;
- bool ret;
+ bool ret, srm_modified = false;
+ int i;
for_each_pipe(display, pipe) {
if (!igt_pipe_connector_valid(pipe, output))
@@ -276,8 +405,10 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
if (!igt_pipe_is_free(display, pipe))
continue;
+ srm_modified = false;
modeset_with_fb(pipe, output, s);
- test_cp_enable_with_retry(output, s, 3, content_type, false);
+ test_cp_enable_with_retry(output, s, 3, content_type, false,
+ false);
if (mei_reload_test) {
igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
@@ -297,6 +428,33 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
test_cp_lic(output);
+ if (output->props[IGT_CONNECTOR_CP_DOWNSTREAM_INFO] &&
+ test_srm) {
+ retrieve_downstream_info_prepare_srm(output);
+ srm_modified =
+ write_srm_into_sysfs((const char *)facsimile_srm,
+ sizeof(facsimile_srm));
+ igt_assert_f(srm_modified, "SRM update failed");
+ }
+
+ if (test_srm && srm_modified) {
+ test_cp_disable(output, s);
+ test_cp_enable_with_retry(output, s, 3, content_type,
+ false, test_srm);
+
+ /* Removing the sink's Receiver ID from SRM Blob */
+ for (i = 0; i < 5; i++)
+ facsimile_srm[i + 9] = 0;
+
+ srm_modified =
+ write_srm_into_sysfs((const char *)facsimile_srm,
+ sizeof(facsimile_srm));
+ igt_assert_f(srm_modified, "SRM update failed");
+
+ test_cp_enable_with_retry(output, s, 1, content_type,
+ false, false);
+ }
+
if (dpms_test) {
igt_pipe_set_prop_value(display, pipe,
IGT_CRTC_ACTIVE, 0);
@@ -310,7 +468,8 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
KERNEL_AUTH_TIME_ALLOWED_MSEC);
if (!ret)
test_cp_enable_with_retry(output, s, 2,
- content_type, false);
+ content_type, false,
+ false);
}
test_cp_disable(output, s);
@@ -375,7 +534,8 @@ static bool sink_hdcp2_capable(igt_output_t *output)
static void
test_content_protection(enum igt_commit_style s, bool dpms_test,
- int content_type, bool mei_reload_test)
+ int content_type, bool mei_reload_test,
+ bool test_srm)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -407,7 +567,7 @@ test_content_protection(enum igt_commit_style s, bool dpms_test,
test_content_protection_on_output(output, s, dpms_test,
content_type,
- mei_reload_test);
+ mei_reload_test, test_srm);
valid_tests++;
}
@@ -426,32 +586,59 @@ igt_main
igt_subtest("legacy")
test_content_protection(COMMIT_LEGACY, false, CP_TYPE_0,
- false);
+ false, false);
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_0,
- false);
+ false, false);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, true, CP_TYPE_0,
- false);
+ false, false);
}
igt_subtest("Type1") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
- false);
+ false, false);
}
igt_subtest("type1_mei_interface") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
- true);
+ true, false);
}
+ /*
+ * SRM subtest perform the HDCP authentication, and then retrive the
+ * receiver id through downstream info.
+ *
+ * Using the receiver ID, facsimile SRM table is modified with
+ * receiver ID retrieved from teh downstream info. After modification
+ * SRM table is not intact as per DCP Signature.
+ *
+ * But Kernel believes userspace and doesn't verify the DCP signature.
+ * So we can exploite that trust to test the SRM and downstream info
+ * features.
+ *
+ * So when modified SRM is applied Authentication will fail due to
+ * receiver ID revocation.
+ *
+ * And Kernel attempts HDCP2.2 always and on failure of it HDCP1.4
+ * will be attempted. But their ID of the sink varies between 1.4 and
+ * 2.2 versions. So we need to stick to one version. Hence HDCP2.2 is
+ * choosen using Type 1.
+ */
+ igt_subtest("srm") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
+ false, true);
+ }
+
+
igt_fixture
igt_display_fini(&data.display);
}
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 8+ messages in thread* [igt-dev] [PATCH i-g-t v2 4/5] kms_content_protection: test content type change
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
` (2 preceding siblings ...)
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 3/5] kms_content_protection: srm and downstream_info test Ramalingam C
@ 2019-03-08 16:30 ` Ramalingam C
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 5/5] DO NOT MERGE: CP in fast feedback list Ramalingam C
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Ramalingam C @ 2019-03-08 16:30 UTC (permalink / raw)
To: igt-dev, daniel.vetter
Testing the content type change when the content protection already
enabled.
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
tests/kms_content_protection.c | 61 ++++++++++++++++++++++------------
1 file changed, 40 insertions(+), 21 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 3d2a01db277b..a1e73fcbdceb 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -274,7 +274,7 @@ static void modeset_with_fb(const enum pipe pipe, igt_output_t *output,
}
static bool test_cp_enable(igt_output_t *output, enum igt_commit_style s,
- int content_type)
+ int content_type, bool test_type_change)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -282,8 +282,11 @@ static bool test_cp_enable(igt_output_t *output, enum igt_commit_style s,
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_output_set_prop_value(output,
- IGT_CONNECTOR_CONTENT_PROTECTION, CP_DESIRED);
+ if (!test_type_change)
+ igt_output_set_prop_value(output,
+ IGT_CONNECTOR_CONTENT_PROTECTION,
+ CP_DESIRED);
+
if (output->props[IGT_CONNECTOR_CP_CONTENT_TYPE])
igt_output_set_prop_value(output, IGT_CONNECTOR_CP_CONTENT_TYPE,
content_type);
@@ -325,13 +328,16 @@ static void test_cp_disable(igt_output_t *output, enum igt_commit_style s)
static void test_cp_enable_with_retry(igt_output_t *output,
enum igt_commit_style s, int retry,
int content_type, bool expect_failure,
- bool test_srm)
+ bool test_srm, bool test_type_change)
{
+ int retry_orig = retry;
bool ret;
do {
- test_cp_disable(output, s);
- ret = test_cp_enable(output, s, content_type);
+ if (!test_type_change || retry_orig != retry)
+ test_cp_disable(output, s);
+
+ ret = test_cp_enable(output, s, content_type, test_type_change);
if (!ret && --retry)
igt_debug("Retry (%d/2) ...\n", 3 - retry);
@@ -384,7 +390,8 @@ static bool write_srm_into_sysfs(const char *srm, int len)
static void
test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
bool dpms_test, int content_type,
- bool mei_reload_test, bool test_srm)
+ bool mei_reload_test, bool test_srm,
+ bool test_type_change)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -408,7 +415,11 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
srm_modified = false;
modeset_with_fb(pipe, output, s);
test_cp_enable_with_retry(output, s, 3, content_type, false,
- false);
+ false, false);
+ if (test_type_change && content_type == CP_TYPE_1)
+ test_cp_enable_with_retry(output, s, 3, CP_TYPE_0,
+ false, false,
+ test_type_change);
if (mei_reload_test) {
igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
@@ -416,14 +427,16 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
/* Expected to fail */
test_cp_enable_with_retry(output, s, 3,
- content_type, false, true);
+ content_type, false, true,
+ false);
igt_assert_f(!igt_kmod_load("mei_hdcp", NULL),
"mei_hdcp load failed");
/* Expected to pass */
test_cp_enable_with_retry(output, s, 3,
- content_type, false, false);
+ content_type, false, false,
+ false);
}
test_cp_lic(output);
@@ -440,7 +453,7 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
if (test_srm && srm_modified) {
test_cp_disable(output, s);
test_cp_enable_with_retry(output, s, 3, content_type,
- false, test_srm);
+ false, test_srm, false);
/* Removing the sink's Receiver ID from SRM Blob */
for (i = 0; i < 5; i++)
@@ -452,7 +465,7 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
igt_assert_f(srm_modified, "SRM update failed");
test_cp_enable_with_retry(output, s, 1, content_type,
- false, false);
+ false, false, false);
}
if (dpms_test) {
@@ -469,7 +482,7 @@ test_content_protection_on_output(igt_output_t *output, enum igt_commit_style s,
if (!ret)
test_cp_enable_with_retry(output, s, 2,
content_type, false,
- false);
+ false, false);
}
test_cp_disable(output, s);
@@ -535,7 +548,7 @@ static bool sink_hdcp2_capable(igt_output_t *output)
static void
test_content_protection(enum igt_commit_style s, bool dpms_test,
int content_type, bool mei_reload_test,
- bool test_srm)
+ bool test_srm, bool test_type_change)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -567,7 +580,8 @@ test_content_protection(enum igt_commit_style s, bool dpms_test,
test_content_protection_on_output(output, s, dpms_test,
content_type,
- mei_reload_test, test_srm);
+ mei_reload_test, test_srm,
+ test_type_change);
valid_tests++;
}
@@ -586,30 +600,30 @@ igt_main
igt_subtest("legacy")
test_content_protection(COMMIT_LEGACY, false, CP_TYPE_0,
- false, false);
+ false, false, false);
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_0,
- false, false);
+ false, false, false);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, true, CP_TYPE_0,
- false, false);
+ false, false, false);
}
igt_subtest("Type1") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
- false, false);
+ false, false, false);
}
igt_subtest("type1_mei_interface") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
- true, false);
+ true, false, false);
}
/*
@@ -635,9 +649,14 @@ igt_main
igt_subtest("srm") {
igt_require(data.display.is_atomic);
test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
- false, true);
+ false, true, false);
}
+ igt_subtest("content_type_change") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, false, CP_TYPE_1,
+ false, false, true);
+ }
igt_fixture
igt_display_fini(&data.display);
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 8+ messages in thread* [igt-dev] [PATCH i-g-t v2 5/5] DO NOT MERGE: CP in fast feedback list
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
` (3 preceding siblings ...)
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 4/5] kms_content_protection: test content type change Ramalingam C
@ 2019-03-08 16:30 ` Ramalingam C
2019-03-09 0:56 ` [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests Patchwork
2019-03-09 8:23 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
6 siblings, 0 replies; 8+ messages in thread
From: Ramalingam C @ 2019-03-08 16:30 UTC (permalink / raw)
To: igt-dev, daniel.vetter
For adding the HDCP tests into fastfeedback list
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
tests/intel-ci/fast-feedback.testlist | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index 9b71194670da..00450c52f80c 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -184,6 +184,9 @@ igt@kms_chamelium@hdmi-crc-fast
igt@kms_chamelium@vga-hpd-fast
igt@kms_chamelium@vga-edid-read
igt@kms_chamelium@common-hpd-after-suspend
+igt@kms_content_protection@legacy
+igt@kms_content_protection@atomic
+igt@kms_content_protection@srm
igt@kms_prop_blob@basic
igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic
igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy
--
2.19.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 8+ messages in thread* [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
` (4 preceding siblings ...)
2019-03-08 16:30 ` [igt-dev] [PATCH i-g-t v2 5/5] DO NOT MERGE: CP in fast feedback list Ramalingam C
@ 2019-03-09 0:56 ` Patchwork
2019-03-09 8:23 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
6 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-03-09 0:56 UTC (permalink / raw)
To: Ramalingam C; +Cc: igt-dev
== Series Details ==
Series: HDCP2.2 Tests
URL : https://patchwork.freedesktop.org/series/57756/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5729 -> IGTPW_2578
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57756/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2578:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_content_protection@srm} (NEW):
- fi-icl-u3: NOTRUN -> SKIP
- fi-icl-u2: NOTRUN -> SKIP
New tests
---------
New tests have been introduced between CI_DRM_5729 and IGTPW_2578:
### New IGT tests (1) ###
* igt@kms_content_protection@srm:
- Statuses : 40 skip(s)
- Exec time: [0.0, 0.00] s
Known issues
------------
Here are the changes found in IGTPW_2578 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_basic@query-info:
- fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] +58
* igt@gem_exec_basic@gtt-bsd2:
- fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] +60
* igt@gem_exec_basic@readonly-bsd1:
- fi-snb-2520m: NOTRUN -> SKIP [fdo#109271] +60
* igt@gem_exec_suspend@basic-s3:
- fi-icl-u3: PASS -> FAIL [fdo#103375]
* igt@i915_module_load@reload-with-fault-injection:
- fi-skl-6770hq: PASS -> DMESG-WARN [fdo#108529] +2
* igt@i915_pm_rpm@basic-pci-d3-state:
- fi-byt-j1900: PASS -> SKIP [fdo#109271]
* igt@i915_pm_rpm@basic-rte:
- fi-byt-j1900: PASS -> FAIL [fdo#108800]
* igt@kms_addfb_basic@addfb25-y-tiled-small:
- fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] +59
* igt@kms_busy@basic-flip-a:
- fi-bsw-n3050: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1
* igt@kms_busy@basic-flip-b:
- fi-gdg-551: PASS -> FAIL [fdo#103182]
* igt@kms_busy@basic-flip-c:
- fi-byt-clapper: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
- fi-bsw-kefka: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
- fi-snb-2520m: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
- fi-byt-n2820: NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
* igt@kms_chamelium@hdmi-crc-fast:
- fi-bsw-n3050: NOTRUN -> SKIP [fdo#109271] +65
* igt@kms_chamelium@hdmi-edid-read:
- fi-hsw-peppy: NOTRUN -> SKIP [fdo#109271] +49
* igt@kms_content_protection@atomic:
- fi-skl-gvtdvm: NOTRUN -> FAIL [fdo#108597] / [fdo#108739] +1
- fi-ivb-3520m: NOTRUN -> SKIP [fdo#109271] +2
- fi-elk-e7500: NOTRUN -> SKIP [fdo#109271] +2
- fi-whl-u: NOTRUN -> SKIP [fdo#109271] +2
- fi-cfl-8700k: NOTRUN -> SKIP [fdo#109271] +2
- fi-pnv-d510: NOTRUN -> SKIP [fdo#109271] +2
- fi-skl-guc: NOTRUN -> SKIP [fdo#109271] +2
- fi-apl-guc: NOTRUN -> FAIL [fdo#108597] / [fdo#108739] +1
* igt@kms_content_protection@legacy:
- fi-cfl-guc: NOTRUN -> SKIP [fdo#109271] +2
- fi-snb-2600: NOTRUN -> SKIP [fdo#109271] +2
- fi-skl-6770hq: NOTRUN -> FAIL [fdo#108597] / [fdo#108739]
- fi-bxt-j4205: NOTRUN -> SKIP [fdo#109271] +2
- fi-kbl-r: NOTRUN -> SKIP [fdo#109271] +2
- fi-cfl-8109u: NOTRUN -> FAIL [fdo#108739] +1
- fi-kbl-guc: NOTRUN -> SKIP [fdo#109271] +2
- fi-bdw-gvtdvm: NOTRUN -> SKIP [fdo#109271] +2
- fi-gdg-551: NOTRUN -> SKIP [fdo#109271] +2
- fi-bwr-2160: NOTRUN -> SKIP [fdo#109271] +2
- fi-hsw-4770: NOTRUN -> SKIP [fdo#109271] +2
- fi-ivb-3770: NOTRUN -> SKIP [fdo#109271] +2
- fi-kbl-8809g: NOTRUN -> SKIP [fdo#109271] +2
* {igt@kms_content_protection@srm} (NEW):
- fi-ilk-650: NOTRUN -> SKIP [fdo#109271] +2
- fi-hsw-4770r: NOTRUN -> SKIP [fdo#109271] +2
- fi-cfl-8109u: NOTRUN -> SKIP [fdo#109271]
- fi-bdw-5557u: NOTRUN -> SKIP [fdo#109271] +2
- fi-kbl-7567u: NOTRUN -> SKIP [fdo#109271]
- fi-skl-6600u: NOTRUN -> SKIP [fdo#109271] +2
- fi-kbl-7560u: NOTRUN -> SKIP [fdo#109271] +2
- fi-byt-j1900: NOTRUN -> SKIP [fdo#109271] +2
- {fi-skl-lmem}: NOTRUN -> SKIP [fdo#109271]
- fi-apl-guc: NOTRUN -> SKIP [fdo#109271]
- fi-skl-6770hq: NOTRUN -> SKIP [fdo#109271] +1
- fi-skl-6700k2: NOTRUN -> SKIP [fdo#109271]
- fi-skl-6260u: NOTRUN -> SKIP [fdo#109271]
- fi-skl-gvtdvm: NOTRUN -> SKIP [fdo#109271]
- fi-kbl-x1275: NOTRUN -> SKIP [fdo#109271]
* igt@kms_flip@basic-flip-vs-dpms:
- fi-skl-6770hq: PASS -> SKIP [fdo#109271] +33
* igt@kms_frontbuffer_tracking@basic:
- fi-icl-u3: PASS -> FAIL [fdo#103167]
- fi-hsw-peppy: NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814]
* igt@kms_pipe_crc_basic@bad-source:
- fi-skl-6770hq: PASS -> DMESG-WARN [fdo#108833]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814
[fdo#108529]: https://bugs.freedesktop.org/show_bug.cgi?id=108529
[fdo#108597]: https://bugs.freedesktop.org/show_bug.cgi?id=108597
[fdo#108739]: https://bugs.freedesktop.org/show_bug.cgi?id=108739
[fdo#108800]: https://bugs.freedesktop.org/show_bug.cgi?id=108800
[fdo#108833]: https://bugs.freedesktop.org/show_bug.cgi?id=108833
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
Participating hosts (40 -> 43)
------------------------------
Additional (6): fi-bsw-n3050 fi-hsw-peppy fi-snb-2520m fi-bsw-kefka fi-byt-n2820 fi-byt-clapper
Missing (3): fi-ilk-m540 fi-bsw-cyan fi-bdw-samus
Build changes
-------------
* IGT: IGT_4878 -> IGTPW_2578
CI_DRM_5729: b50390674ed3eff49d1926a86acfee68b5565093 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2578: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2578/
IGT_4878: 478615b1edba88559386ba80ccbf0f035f3360a9 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_content_protection@content_type_change
+igt@kms_content_protection@srm
+igt@kms_content_protection@type1
+igt@kms_content_protection@type1_mei_interface
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2578/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 8+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for HDCP2.2 Tests
2019-03-08 16:30 [igt-dev] [PATCH i-g-t v2 0/5] HDCP2.2 Tests Ramalingam C
` (5 preceding siblings ...)
2019-03-09 0:56 ` [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests Patchwork
@ 2019-03-09 8:23 ` Patchwork
6 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-03-09 8:23 UTC (permalink / raw)
To: Ramalingam C; +Cc: igt-dev
== Series Details ==
Series: HDCP2.2 Tests
URL : https://patchwork.freedesktop.org/series/57756/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5729_full -> IGTPW_2578_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57756/revisions/1/mbox/
New tests
---------
New tests have been introduced between CI_DRM_5729_full and IGTPW_2578_full:
### New IGT tests (4) ###
* igt@kms_content_protection@content_type_change:
- Statuses : 5 skip(s)
- Exec time: [0.0] s
* igt@kms_content_protection@srm:
- Statuses : 5 skip(s)
- Exec time: [0.0] s
* igt@kms_content_protection@type1:
- Statuses : 4 skip(s)
- Exec time: [0.0] s
* igt@kms_content_protection@type1_mei_interface:
- Statuses : 5 skip(s)
- Exec time: [0.00, 0.04] s
Known issues
------------
Here are the changes found in IGTPW_2578_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gen3_render_tiledy_blits:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] +30
* igt@i915_pm_rpm@gem-execbuf-stress-extra-wait:
- shard-snb: NOTRUN -> SKIP [fdo#109271] +66
* igt@kms_atomic_transition@1x-modeset-transitions-nonblocking:
- shard-apl: PASS -> FAIL [fdo#109660]
- shard-kbl: PASS -> FAIL [fdo#109660]
* igt@kms_atomic_transition@3x-modeset-transitions:
- shard-snb: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6
* igt@kms_busy@extended-modeset-hang-newfb-render-c:
- shard-glk: PASS -> DMESG-WARN [fdo#107956]
- shard-hsw: PASS -> DMESG-WARN [fdo#107956] +1
- shard-kbl: PASS -> DMESG-WARN [fdo#107956] +1
* igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
- shard-glk: NOTRUN -> DMESG-WARN [fdo#107956]
* igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-a:
- shard-hsw: NOTRUN -> DMESG-WARN [fdo#107956]
* igt@kms_color@pipe-a-degamma:
- shard-hsw: NOTRUN -> SKIP [fdo#109271] +6
* {igt@kms_content_protection@type1_mei_interface} (NEW):
- shard-apl: NOTRUN -> SKIP [fdo#109271] +3
* igt@kms_cursor_crc@cursor-256x256-random:
- shard-glk: NOTRUN -> FAIL [fdo#103232]
* igt@kms_cursor_crc@cursor-256x85-random:
- shard-apl: PASS -> FAIL [fdo#103232] +5
* igt@kms_cursor_crc@cursor-64x64-suspend:
- shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_cursor_crc@cursor-alpha-opaque:
- shard-kbl: PASS -> FAIL [fdo#109350]
- shard-apl: PASS -> FAIL [fdo#109350]
- shard-glk: PASS -> FAIL [fdo#109350]
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
- shard-glk: PASS -> FAIL [fdo#103167] +1
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-apl: PASS -> FAIL [fdo#103167] +2
- shard-kbl: PASS -> FAIL [fdo#103167]
* igt@kms_frontbuffer_tracking@fbc-1p-rte:
- shard-kbl: PASS -> FAIL [fdo#103167] / [fdo#105682]
- shard-apl: PASS -> FAIL [fdo#103167] / [fdo#105682]
* igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack:
- shard-glk: NOTRUN -> SKIP [fdo#109271] +43
* igt@kms_plane@pixel-format-pipe-c-planes-source-clamping:
- shard-apl: PASS -> FAIL [fdo#108948] +1
* igt@kms_plane@plane-position-covered-pipe-b-planes:
- shard-kbl: PASS -> FAIL [fdo#103166] +2
* igt@kms_plane@plane-position-covered-pipe-c-planes:
- shard-apl: PASS -> FAIL [fdo#103166] +3
* igt@kms_plane_alpha_blend@pipe-a-alpha-basic:
- shard-kbl: NOTRUN -> FAIL [fdo#108145] / [fdo#108590]
* igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
- shard-kbl: PASS -> FAIL [fdo#108145]
- shard-apl: PASS -> FAIL [fdo#108145]
- shard-glk: PASS -> FAIL [fdo#108145]
* igt@kms_plane_multiple@atomic-pipe-c-tiling-none:
- shard-glk: PASS -> FAIL [fdo#103166] +3
* igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping:
- shard-glk: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +3
* igt@kms_rotation_crc@multiplane-rotation:
- shard-kbl: NOTRUN -> DMESG-FAIL [fdo#105763]
* igt@kms_setmode@basic:
- shard-glk: PASS -> FAIL [fdo#99912]
* igt@kms_universal_plane@disable-primary-vs-flip-pipe-d:
- shard-kbl: NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +4
* igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-kbl: PASS -> FAIL [fdo#104894]
- shard-apl: PASS -> FAIL [fdo#104894]
#### Possible fixes ####
* igt@gem_eio@context-create:
- shard-glk: FAIL -> PASS
* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-snb: SKIP [fdo#109271] -> PASS
* igt@i915_pm_rps@reset:
- shard-glk: FAIL [fdo#102250] -> PASS
* igt@i915_suspend@forcewake:
- shard-kbl: INCOMPLETE [fdo#103665] -> PASS
* igt@kms_busy@extended-modeset-hang-newfb-render-b:
- shard-hsw: DMESG-WARN [fdo#107956] -> PASS +1
- shard-kbl: DMESG-WARN [fdo#107956] -> PASS +1
- shard-snb: DMESG-WARN [fdo#107956] -> PASS +1
* igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
- shard-apl: FAIL [fdo#107725] / [fdo#108145] -> PASS
- shard-glk: FAIL [fdo#108145] -> PASS
* igt@kms_color@pipe-a-ctm-max:
- shard-apl: FAIL [fdo#108147] -> PASS
* igt@kms_color@pipe-b-legacy-gamma:
- shard-apl: FAIL [fdo#104782] -> PASS
* igt@kms_cursor_crc@cursor-128x128-random:
- shard-apl: FAIL [fdo#103232] -> PASS +3
* igt@kms_cursor_crc@cursor-256x256-random:
- shard-kbl: FAIL [fdo#103232] -> PASS
* igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
- shard-hsw: INCOMPLETE [fdo#103540] -> PASS
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
- shard-apl: FAIL [fdo#103167] -> PASS +5
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
- shard-glk: FAIL [fdo#103167] -> PASS +7
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-kbl: FAIL [fdo#103167] -> PASS +1
* igt@kms_plane@pixel-format-pipe-b-planes-source-clamping:
- shard-apl: FAIL [fdo#108948] -> PASS
* igt@kms_plane_multiple@atomic-pipe-b-tiling-none:
- shard-glk: FAIL [fdo#103166] -> PASS +3
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-apl: FAIL [fdo#103166] -> PASS +3
- shard-kbl: FAIL [fdo#103166] -> PASS +1
* igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-kbl: FAIL [fdo#104894] -> PASS
* igt@kms_vblank@pipe-c-ts-continuation-dpms-suspend:
- shard-apl: FAIL [fdo#104894] -> PASS +1
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#104894]: https://bugs.freedesktop.org/show_bug.cgi?id=104894
[fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682
[fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763
[fdo#107725]: https://bugs.freedesktop.org/show_bug.cgi?id=107725
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
[fdo#108590]: https://bugs.freedesktop.org/show_bug.cgi?id=108590
[fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
[fdo#109660]: https://bugs.freedesktop.org/show_bug.cgi?id=109660
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* IGT: IGT_4878 -> IGTPW_2578
* Piglit: piglit_4509 -> None
CI_DRM_5729: b50390674ed3eff49d1926a86acfee68b5565093 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2578: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2578/
IGT_4878: 478615b1edba88559386ba80ccbf0f035f3360a9 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2578/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 8+ messages in thread