* [igt-dev] [PATCH i-g-t v7 1/8] kms_content_protection: Tests are defined by flags
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest Ramalingam C
` (8 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
Considering increase of subtests for kms_content_protection, tests are
defined through flags.
v2:
reset the cp_tests. [Uma]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
tests/kms_content_protection.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index ae6ab497ea21..5f7d8ff9b52b 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -34,8 +34,11 @@ struct data {
int drm_fd;
igt_display_t display;
struct igt_fb red, green;
+ unsigned int cp_tests;
} data;
+#define CP_DPMS (1 << 0)
+
#define CP_UNDESIRED 0
#define CP_DESIRED 1
#define CP_ENABLED 2
@@ -240,8 +243,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)
+ enum igt_commit_style s)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -265,7 +267,7 @@ static void test_content_protection_on_output(igt_output_t *output,
test_cp_enable_with_retry(output, s, 3);
test_cp_lic(output);
- if (dpms_test) {
+ if (data.cp_tests & CP_DPMS) {
igt_pipe_set_prop_value(display, pipe,
IGT_CRTC_ACTIVE, 0);
igt_display_commit2(display, s);
@@ -324,7 +326,7 @@ static bool sink_hdcp_capable(igt_output_t *output)
static void
-test_content_protection(enum igt_commit_style s, bool dpms_test)
+test_content_protection(enum igt_commit_style s)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -341,7 +343,7 @@ test_content_protection(enum igt_commit_style s, bool dpms_test)
continue;
}
- test_content_protection_on_output(output, s, dpms_test);
+ test_content_protection_on_output(output, s);
valid_tests++;
}
@@ -358,17 +360,21 @@ igt_main
igt_display_require(&data.display, data.drm_fd);
}
- igt_subtest("legacy")
- test_content_protection(COMMIT_LEGACY, false);
+ igt_subtest("legacy") {
+ data.cp_tests = 0;
+ test_content_protection(COMMIT_LEGACY);
+ }
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, false);
+ data.cp_tests = 0;
+ test_content_protection(COMMIT_ATOMIC);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
- test_content_protection(COMMIT_ATOMIC, true);
+ data.cp_tests = CP_DPMS;
+ test_content_protection(COMMIT_ATOMIC);
}
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] 14+ messages in thread* [igt-dev] [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 1/8] kms_content_protection: Tests are defined by flags Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-07-02 12:57 ` Shankar, Uma
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 3/8] kms_content_protection: Content type support Ramalingam C
` (7 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
Existing Link integrity check test is moved into dedicated subtest.
This helps to reduce the execution time of other tests by removing the
repeated Link integrity check on every other tests.
v2:
s/reduced/reduce [Uma]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
tests/kms_content_protection.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 5f7d8ff9b52b..c86fe936f12f 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -38,6 +38,7 @@ struct data {
} data;
#define CP_DPMS (1 << 0)
+#define CP_LIC (1 << 1)
#define CP_UNDESIRED 0
#define CP_DESIRED 1
@@ -265,7 +266,9 @@ 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);
+
+ if (data.cp_tests & CP_LIC)
+ test_cp_lic(output);
if (data.cp_tests & CP_DPMS) {
igt_pipe_set_prop_value(display, pipe,
@@ -377,6 +380,12 @@ igt_main
test_content_protection(COMMIT_ATOMIC);
}
+ igt_subtest("LIC") {
+ igt_require(data.display.is_atomic);
+ data.cp_tests = CP_LIC;
+ test_content_protection(COMMIT_ATOMIC);
+ }
+
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] 14+ messages in thread* Re: [igt-dev] [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest Ramalingam C
@ 2019-07-02 12:57 ` Shankar, Uma
0 siblings, 0 replies; 14+ messages in thread
From: Shankar, Uma @ 2019-07-02 12:57 UTC (permalink / raw)
To: C, Ramalingam, Vetter, Daniel, igt-dev@lists.freedesktop.org
>-----Original Message-----
>From: C, Ramalingam
>Sent: Thursday, May 30, 2019 8:31 PM
>To: Shankar, Uma <uma.shankar@intel.com>; Vetter, Daniel
><daniel.vetter@intel.com>; igt-dev@lists.freedesktop.org
>Cc: Mun, Gwan-gyeong <gwan-gyeong.mun@intel.com>; C, Ramalingam
><ramalingam.c@intel.com>
>Subject: [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest
>
>Existing Link integrity check test is moved into dedicated subtest.
>This helps to reduce the execution time of other tests by removing the repeated Link
>integrity check on every other tests.
>
>v2:
> s/reduced/reduce [Uma]
Looks good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>---
> tests/kms_content_protection.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
>diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index
>5f7d8ff9b52b..c86fe936f12f 100644
>--- a/tests/kms_content_protection.c
>+++ b/tests/kms_content_protection.c
>@@ -38,6 +38,7 @@ struct data {
> } data;
>
> #define CP_DPMS (1 << 0)
>+#define CP_LIC (1 << 1)
>
> #define CP_UNDESIRED 0
> #define CP_DESIRED 1
>@@ -265,7 +266,9 @@ 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);
>+
>+ if (data.cp_tests & CP_LIC)
>+ test_cp_lic(output);
>
> if (data.cp_tests & CP_DPMS) {
> igt_pipe_set_prop_value(display, pipe, @@ -377,6 +380,12
>@@ igt_main
> test_content_protection(COMMIT_ATOMIC);
> }
>
>+ igt_subtest("LIC") {
>+ igt_require(data.display.is_atomic);
>+ data.cp_tests = CP_LIC;
>+ test_content_protection(COMMIT_ATOMIC);
>+ }
>+
> 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 [flat|nested] 14+ messages in thread
* [igt-dev] [PATCH i-g-t v7 3/8] kms_content_protection: Content type support
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 1/8] kms_content_protection: Tests are defined by flags Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 2/8] kms_content_protection: Link Integrity Check subtest Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 4/8] kms_content_protection: test teardown and rebuild of I915-mei I/F Ramalingam C
` (6 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
Adds a connector property called "CP_Content_Type"
Content Type takes two values which classifies the content stream:
Type 0: Stream that can be transmitted 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 available
version(v1.4) before abondoning HDCP authentication attempts.
Please note content_type is allowed to be updated when "Content
Protection" is in UNDESIRED state.
v2:
s/cp_content_type/content_protection_type [danvet]
v3:
s/content_protection_type/HDCP Content Type [Pekka]
v4:
Rebased
v5:
Typos in the commit msg is fixed [Uma]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
lib/igt_kms.c | 1 +
lib/igt_kms.h | 1 +
tests/kms_content_protection.c | 74 +++++++++++++++++++++++++++-------
3 files changed, 62 insertions(+), 14 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index a7dc3ac3fb66..02863eb8c483 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -222,6 +222,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_HDCP_CONTENT_TYPE] = "HDCP Content Type",
};
/*
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 38bdc08f3d50..b1430a517305 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_HDCP_CONTENT_TYPE,
IGT_NUM_CONNECTOR_PROPS
};
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index c86fe936f12f..32630f28630b 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -44,6 +44,13 @@ struct data {
#define CP_DESIRED 1
#define CP_ENABLED 2
+/*
+ * HDCP_CONTENT_TYPE_0 can be handled on both HDCP1.4 and HDCP2.2. Where as
+ * HDCP_CONTENT_TYPE_1 can be handled only through HDCP2.2.
+ */
+#define HDCP_CONTENT_TYPE_0 0
+#define HDCP_CONTENT_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)
@@ -159,7 +166,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;
@@ -169,6 +177,10 @@ 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_HDCP_CONTENT_TYPE])
+ igt_output_set_prop_value(output,
+ IGT_CONNECTOR_HDCP_CONTENT_TYPE,
+ content_type);
igt_display_commit2(display, s);
ret = wait_for_prop_value(output, CP_ENABLED,
@@ -205,13 +217,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);
@@ -244,7 +257,8 @@ 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)
+ enum igt_commit_style s,
+ int content_type)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -265,7 +279,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);
if (data.cp_tests & CP_LIC)
test_cp_lic(output);
@@ -282,7 +296,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);
@@ -309,7 +324,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];
@@ -327,9 +343,25 @@ 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)
+test_content_protection(enum igt_commit_style s, int content_type)
{
igt_display_t *display = &data.display;
igt_output_t *output;
@@ -339,14 +371,23 @@ test_content_protection(enum igt_commit_style s)
if (!output->props[IGT_CONNECTOR_CONTENT_PROTECTION])
continue;
+ if (!output->props[IGT_CONNECTOR_HDCP_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);
+ test_content_protection_on_output(output, s, content_type);
valid_tests++;
}
@@ -365,25 +406,30 @@ igt_main
igt_subtest("legacy") {
data.cp_tests = 0;
- test_content_protection(COMMIT_LEGACY);
+ test_content_protection(COMMIT_LEGACY, HDCP_CONTENT_TYPE_0);
}
igt_subtest("atomic") {
igt_require(data.display.is_atomic);
data.cp_tests = 0;
- test_content_protection(COMMIT_ATOMIC);
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
}
igt_subtest("atomic-dpms") {
igt_require(data.display.is_atomic);
data.cp_tests = CP_DPMS;
- test_content_protection(COMMIT_ATOMIC);
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
}
igt_subtest("LIC") {
igt_require(data.display.is_atomic);
data.cp_tests = CP_LIC;
- test_content_protection(COMMIT_ATOMIC);
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0);
+ }
+
+ igt_subtest("type1") {
+ igt_require(data.display.is_atomic);
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_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] 14+ messages in thread* [igt-dev] [PATCH i-g-t v7 4/8] kms_content_protection: test teardown and rebuild of I915-mei I/F
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (2 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 3/8] kms_content_protection: Content type support Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 5/8] kms_content_protection: test content type change Ramalingam C
` (5 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
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)
v2:
Rebased.
v3:
Rebased.
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
tests/kms_content_protection.c | 44 ++++++++++++++++++++++++++++++----
1 file changed, 39 insertions(+), 5 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 32630f28630b..76b0c9b0c414 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)");
@@ -37,8 +38,10 @@ struct data {
unsigned int cp_tests;
} data;
+/* Test flags */
#define CP_DPMS (1 << 0)
#define CP_LIC (1 << 1)
+#define CP_MEI_RELOAD (1 << 2)
#define CP_UNDESIRED 0
#define CP_DESIRED 1
@@ -218,7 +221,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;
@@ -233,7 +236,12 @@ static void test_cp_enable_with_retry(igt_output_t *output,
if (!ret)
test_cp_disable(output, s);
- 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)
@@ -279,7 +287,23 @@ 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 (data.cp_tests & CP_MEI_RELOAD) {
+ 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, 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);
+ }
if (data.cp_tests & CP_LIC)
test_cp_lic(output);
@@ -296,8 +320,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);
@@ -367,6 +391,10 @@ test_content_protection(enum igt_commit_style s, int content_type)
igt_output_t *output;
int valid_tests = 0;
+ if (data.cp_tests & CP_MEI_RELOAD)
+ 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;
@@ -432,6 +460,12 @@ igt_main
test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
}
+ igt_subtest("mei_interface") {
+ igt_require(data.display.is_atomic);
+ data.cp_tests = CP_MEI_RELOAD;
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
+ }
+
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] 14+ messages in thread* [igt-dev] [PATCH i-g-t v7 5/8] kms_content_protection: test content type change
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (3 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 4/8] kms_content_protection: test teardown and rebuild of I915-mei I/F Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-07-02 13:01 ` Shankar, Uma
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status change Ramalingam C
` (4 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
Testing the content type change when the content protection already
enabled.
v2:
Rebased.
v3:
Type 0 -> Type 1 is included.
Type check is removed [Uma]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
tests/kms_content_protection.c | 47 ++++++++++++++++++++++++++--------
1 file changed, 37 insertions(+), 10 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 76b0c9b0c414..215b7a7c0fc7 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -42,6 +42,7 @@ struct data {
#define CP_DPMS (1 << 0)
#define CP_LIC (1 << 1)
#define CP_MEI_RELOAD (1 << 2)
+#define CP_TYPE_CHANGE (1 << 3)
#define CP_UNDESIRED 0
#define CP_DESIRED 1
@@ -170,7 +171,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 type_change)
{
igt_display_t *display = &data.display;
igt_plane_t *primary;
@@ -178,8 +179,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 (!type_change)
+ igt_output_set_prop_value(output,
+ IGT_CONNECTOR_CONTENT_PROTECTION,
+ CP_DESIRED);
+
if (output->props[IGT_CONNECTOR_HDCP_CONTENT_TYPE])
igt_output_set_prop_value(output,
IGT_CONNECTOR_HDCP_CONTENT_TYPE,
@@ -221,13 +225,17 @@ 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 type_change)
{
+ int retry_orig = retry;
bool ret;
do {
- test_cp_disable(output, s);
- ret = test_cp_enable(output, s, content_type);
+ if (!type_change || retry_orig != retry)
+ test_cp_disable(output, s);
+
+ ret = test_cp_enable(output, s, content_type, type_change);
if (!ret && --retry)
igt_debug("Retry (%d/2) ...\n", 3 - retry);
@@ -287,7 +295,19 @@ 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, false);
+ test_cp_enable_with_retry(output, s, 3, content_type, false,
+ false);
+
+ if (data.cp_tests & CP_TYPE_CHANGE) {
+ /* Type 1 -> Type 0 */
+ test_cp_enable_with_retry(output, s, 3,
+ HDCP_CONTENT_TYPE_0, false,
+ true);
+ /* Type 0 -> Type 1 */
+ test_cp_enable_with_retry(output, s, 3,
+ content_type, false,
+ true);
+ }
if (data.cp_tests & CP_MEI_RELOAD) {
igt_assert_f(!igt_kmod_unload("mei_hdcp", 0),
@@ -295,14 +315,14 @@ static void test_content_protection_on_output(igt_output_t *output,
/* Expected to fail */
test_cp_enable_with_retry(output, s, 3,
- content_type, true);
+ content_type, 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);
+ content_type, false, false);
}
if (data.cp_tests & CP_LIC)
@@ -321,7 +341,8 @@ static void test_content_protection_on_output(igt_output_t *output,
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);
@@ -466,6 +487,12 @@ igt_main
test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
}
+ igt_subtest("content_type_change") {
+ igt_require(data.display.is_atomic);
+ data.cp_tests = CP_TYPE_CHANGE;
+ test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
+ }
+
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] 14+ messages in thread* Re: [igt-dev] [PATCH i-g-t v7 5/8] kms_content_protection: test content type change
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 5/8] kms_content_protection: test content type change Ramalingam C
@ 2019-07-02 13:01 ` Shankar, Uma
0 siblings, 0 replies; 14+ messages in thread
From: Shankar, Uma @ 2019-07-02 13:01 UTC (permalink / raw)
To: C, Ramalingam, Vetter, Daniel, igt-dev@lists.freedesktop.org
>-----Original Message-----
>From: C, Ramalingam
>Sent: Thursday, May 30, 2019 8:31 PM
>To: Shankar, Uma <uma.shankar@intel.com>; Vetter, Daniel
><daniel.vetter@intel.com>; igt-dev@lists.freedesktop.org
>Cc: Mun, Gwan-gyeong <gwan-gyeong.mun@intel.com>; C, Ramalingam
><ramalingam.c@intel.com>
>Subject: [PATCH i-g-t v7 5/8] kms_content_protection: test content type change
>
>Testing the content type change when the content protection already enabled.
>
>v2:
> Rebased.
>v3:
> Type 0 -> Type 1 is included.
> Type check is removed [Uma]
Looks good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>---
> tests/kms_content_protection.c | 47 ++++++++++++++++++++++++++--------
> 1 file changed, 37 insertions(+), 10 deletions(-)
>
>diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index
>76b0c9b0c414..215b7a7c0fc7 100644
>--- a/tests/kms_content_protection.c
>+++ b/tests/kms_content_protection.c
>@@ -42,6 +42,7 @@ struct data {
> #define CP_DPMS (1 << 0)
> #define CP_LIC (1 << 1)
> #define CP_MEI_RELOAD (1 << 2)
>+#define CP_TYPE_CHANGE (1 << 3)
>
> #define CP_UNDESIRED 0
> #define CP_DESIRED 1
>@@ -170,7 +171,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 type_change)
> {
> igt_display_t *display = &data.display;
> igt_plane_t *primary;
>@@ -178,8 +179,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 (!type_change)
>+ igt_output_set_prop_value(output,
>+
>IGT_CONNECTOR_CONTENT_PROTECTION,
>+ CP_DESIRED);
>+
> if (output->props[IGT_CONNECTOR_HDCP_CONTENT_TYPE])
> igt_output_set_prop_value(output,
> IGT_CONNECTOR_HDCP_CONTENT_TYPE,
>@@ -221,13 +225,17 @@ 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 type_change)
> {
>+ int retry_orig = retry;
> bool ret;
>
> do {
>- test_cp_disable(output, s);
>- ret = test_cp_enable(output, s, content_type);
>+ if (!type_change || retry_orig != retry)
>+ test_cp_disable(output, s);
>+
>+ ret = test_cp_enable(output, s, content_type, type_change);
>
> if (!ret && --retry)
> igt_debug("Retry (%d/2) ...\n", 3 - retry); @@ -287,7 +295,19
>@@ 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, false);
>+ test_cp_enable_with_retry(output, s, 3, content_type, false,
>+ false);
>+
>+ if (data.cp_tests & CP_TYPE_CHANGE) {
>+ /* Type 1 -> Type 0 */
>+ test_cp_enable_with_retry(output, s, 3,
>+ HDCP_CONTENT_TYPE_0, false,
>+ true);
>+ /* Type 0 -> Type 1 */
>+ test_cp_enable_with_retry(output, s, 3,
>+ content_type, false,
>+ true);
>+ }
>
> if (data.cp_tests & CP_MEI_RELOAD) {
> igt_assert_f(!igt_kmod_unload("mei_hdcp", 0), @@ -295,14
>+315,14 @@ static void test_content_protection_on_output(igt_output_t *output,
>
> /* Expected to fail */
> test_cp_enable_with_retry(output, s, 3,
>- content_type, true);
>+ content_type, 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);
>+ content_type, false, false);
> }
>
> if (data.cp_tests & CP_LIC)
>@@ -321,7 +341,8 @@ static void test_content_protection_on_output(igt_output_t
>*output,
>
>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);
>@@ -466,6 +487,12 @@ igt_main
> test_content_protection(COMMIT_ATOMIC,
>HDCP_CONTENT_TYPE_1);
> }
>
>+ igt_subtest("content_type_change") {
>+ igt_require(data.display.is_atomic);
>+ data.cp_tests = CP_TYPE_CHANGE;
>+ test_content_protection(COMMIT_ATOMIC,
>HDCP_CONTENT_TYPE_1);
>+ }
>+
> 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 [flat|nested] 14+ messages in thread
* [igt-dev] [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status change
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (4 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 5/8] kms_content_protection: test content type change Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-07-02 13:16 ` Shankar, Uma
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 7/8] kms_content_protection: SRM Testing Ramalingam C
` (3 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
To detect the HDCP status change we are reading the uevent sent with the
corresponding connector id and property id.
This avoids the polling of the property every mSec.
v2:
Made it as subtest. Remaining tests will use polling. [Daniel]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
tests/kms_content_protection.c | 158 ++++++++++++++++++++++++++++++++-
1 file changed, 156 insertions(+), 2 deletions(-)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 215b7a7c0fc7..ab6a2da55c23 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -24,6 +24,9 @@
#include <poll.h>
#include <fcntl.h>
+#include <sys/epoll.h>
+#include <sys/stat.h>
+#include <libudev.h>
#include "igt.h"
#include "igt_sysfs.h"
#include "igt_kms.h"
@@ -43,6 +46,7 @@ struct data {
#define CP_LIC (1 << 1)
#define CP_MEI_RELOAD (1 << 2)
#define CP_TYPE_CHANGE (1 << 3)
+#define CP_UEVENT (1 << 4)
#define CP_UNDESIRED 0
#define CP_DESIRED 1
@@ -102,6 +106,137 @@ static int wait_flip_event(void)
return rc;
}
+static bool hdcp_event(struct udev_monitor *uevent_monitor,
+ struct udev *udev, uint32_t conn_id, uint32_t prop_id)
+{
+ struct udev_device *dev;
+ dev_t udev_devnum;
+ struct stat s;
+ const char *hotplug, *connector, *property;
+ bool ret = false;
+
+ dev = udev_monitor_receive_device(uevent_monitor);
+ if (!dev)
+ goto out;
+
+ udev_devnum = udev_device_get_devnum(dev);
+ fstat(data.display.drm_fd, &s);
+
+ hotplug = udev_device_get_property_value(dev, "HOTPLUG");
+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
+ hotplug && atoi(hotplug) == 1)) {
+ igt_debug("Not a Hotplug event\n");
+ goto out_dev;
+ }
+
+ connector = udev_device_get_property_value(dev, "CONNECTOR");
+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
+ connector && atoi(connector) == conn_id)) {
+ igt_debug("Not for connector id: %u\n", conn_id);
+ goto out_dev;
+ }
+
+ property = udev_device_get_property_value(dev, "PROPERTY");
+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
+ property && atoi(property) == prop_id)) {
+ igt_debug("Not for property id: %u\n", prop_id);
+ goto out_dev;
+ }
+ ret = true;
+
+out_dev:
+ udev_device_unref(dev);
+out:
+ return ret;
+}
+
+static void hdcp_udev_fini(struct udev_monitor *uevent_monitor,
+ struct udev *udev)
+{
+ if (uevent_monitor)
+ udev_monitor_unref(uevent_monitor);
+ if (udev)
+ udev_unref(udev);
+}
+
+static int hdcp_udev_init(struct udev_monitor *uevent_monitor,
+ struct udev *udev)
+{
+ int ret = -EINVAL;
+
+ udev = udev_new();
+ if (!udev) {
+ igt_info("failed to create udev object\n");
+ goto out;
+ }
+
+ uevent_monitor = udev_monitor_new_from_netlink(udev, "udev");
+ if (!uevent_monitor) {
+ igt_info("failed to create udev event monitor\n");
+ goto out;
+ }
+
+ ret = udev_monitor_filter_add_match_subsystem_devtype(uevent_monitor,
+ "drm",
+ "drm_minor");
+ if (ret < 0) {
+ igt_info("failed to filter for drm events\n");
+ goto out;
+ }
+
+ ret = udev_monitor_enable_receiving(uevent_monitor);
+ if (ret < 0) {
+ igt_info("failed to enable udev event reception\n");
+ goto out;
+ }
+
+ return udev_monitor_get_fd(uevent_monitor);
+
+out:
+ hdcp_udev_fini(uevent_monitor, udev);
+ return ret;
+}
+
+#define MAX_EVENTS 10
+static bool wait_for_hdcp_event(uint32_t conn_id, uint32_t prop_id,
+ uint32_t timeout_mSec)
+{
+
+ struct udev_monitor *uevent_monitor = NULL;
+ struct udev *udev = NULL;
+ int udev_fd, epoll_fd;
+ struct epoll_event event, events[MAX_EVENTS];
+ bool ret = false;
+
+ udev_fd = hdcp_udev_init(uevent_monitor, udev);
+ if (udev_fd < 0)
+ return false;
+
+ epoll_fd = epoll_create1(0);
+ if (epoll_fd == -1) {
+ igt_info("Failed to create epoll fd. %d\n", epoll_fd);
+ goto out_ep_create;
+ }
+
+ event.events = EPOLLIN | EPOLLERR;
+ event.data.fd = 0;
+
+ if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, udev_fd, &event)) {
+ igt_info("failed to fd into epoll\n");
+ goto out_ep_ctl;
+ }
+
+ if (epoll_wait(epoll_fd, events, MAX_EVENTS, timeout_mSec))
+ ret = hdcp_event(uevent_monitor, udev, conn_id, prop_id);
+
+out_ep_ctl:
+ if (close(epoll_fd))
+ igt_info("failed to close the epoll fd\n");
+out_ep_create:
+ hdcp_udev_fini(uevent_monitor, udev);
+ return ret;
+}
+
static bool
wait_for_prop_value(igt_output_t *output, uint64_t expected,
uint32_t timeout_mSec)
@@ -109,13 +244,26 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected,
uint64_t val;
int i;
- for (i = 0; i < timeout_mSec; i++) {
+ if (data.cp_tests & CP_UEVENT) {
+ if (wait_for_hdcp_event(output->id,
+ output->props[IGT_CONNECTOR_CONTENT_PROTECTION],
+ timeout_mSec))
+ igt_debug("hdcp event received\n");
+
val = igt_output_get_prop(output,
IGT_CONNECTOR_CONTENT_PROTECTION);
if (val == expected)
return true;
- usleep(1000);
+ } else {
+ for (i = 0; i < timeout_mSec; i++) {
+ val = igt_output_get_prop(output,
+ IGT_CONNECTOR_CONTENT_PROTECTION);
+ if (val == expected)
+ return true;
+ usleep(1000);
+ }
}
+
igt_info("prop_value mismatch %" PRId64 " != %" PRId64 "\n",
val, expected);
@@ -493,6 +641,12 @@ igt_main
test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_1);
}
+ igt_subtest("uevent") {
+ igt_require(data.display.is_atomic);
+ data.cp_tests = CP_UEVENT;
+ 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [igt-dev] [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status change
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status change Ramalingam C
@ 2019-07-02 13:16 ` Shankar, Uma
0 siblings, 0 replies; 14+ messages in thread
From: Shankar, Uma @ 2019-07-02 13:16 UTC (permalink / raw)
To: C, Ramalingam, Vetter, Daniel, igt-dev@lists.freedesktop.org
>-----Original Message-----
>From: C, Ramalingam
>Sent: Thursday, May 30, 2019 8:31 PM
>To: Shankar, Uma <uma.shankar@intel.com>; Vetter, Daniel
><daniel.vetter@intel.com>; igt-dev@lists.freedesktop.org
>Cc: Mun, Gwan-gyeong <gwan-gyeong.mun@intel.com>; C, Ramalingam
><ramalingam.c@intel.com>
>Subject: [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status
>change
>
>To detect the HDCP status change we are reading the uevent sent with the
>corresponding connector id and property id.
>
>This avoids the polling of the property every mSec.
>
>v2:
> Made it as subtest. Remaining tests will use polling. [Daniel]
>
>Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>---
> tests/kms_content_protection.c | 158 ++++++++++++++++++++++++++++++++-
> 1 file changed, 156 insertions(+), 2 deletions(-)
>
>diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index
>215b7a7c0fc7..ab6a2da55c23 100644
>--- a/tests/kms_content_protection.c
>+++ b/tests/kms_content_protection.c
>@@ -24,6 +24,9 @@
>
> #include <poll.h>
> #include <fcntl.h>
>+#include <sys/epoll.h>
>+#include <sys/stat.h>
>+#include <libudev.h>
> #include "igt.h"
> #include "igt_sysfs.h"
> #include "igt_kms.h"
>@@ -43,6 +46,7 @@ struct data {
> #define CP_LIC (1 << 1)
> #define CP_MEI_RELOAD (1 << 2)
> #define CP_TYPE_CHANGE (1 << 3)
>+#define CP_UEVENT (1 << 4)
>
> #define CP_UNDESIRED 0
> #define CP_DESIRED 1
>@@ -102,6 +106,137 @@ static int wait_flip_event(void)
> return rc;
> }
>
>+static bool hdcp_event(struct udev_monitor *uevent_monitor,
>+ struct udev *udev, uint32_t conn_id, uint32_t prop_id) {
>+ struct udev_device *dev;
>+ dev_t udev_devnum;
>+ struct stat s;
>+ const char *hotplug, *connector, *property;
>+ bool ret = false;
>+
>+ dev = udev_monitor_receive_device(uevent_monitor);
>+ if (!dev)
>+ goto out;
>+
>+ udev_devnum = udev_device_get_devnum(dev);
>+ fstat(data.display.drm_fd, &s);
>+
>+ hotplug = udev_device_get_property_value(dev, "HOTPLUG");
>+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
>+ hotplug && atoi(hotplug) == 1)) {
>+ igt_debug("Not a Hotplug event\n");
>+ goto out_dev;
>+ }
>+
>+ connector = udev_device_get_property_value(dev, "CONNECTOR");
>+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
>+ connector && atoi(connector) == conn_id)) {
>+ igt_debug("Not for connector id: %u\n", conn_id);
>+ goto out_dev;
>+ }
>+
>+ property = udev_device_get_property_value(dev, "PROPERTY");
>+ if (!(memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
>+ property && atoi(property) == prop_id)) {
>+ igt_debug("Not for property id: %u\n", prop_id);
>+ goto out_dev;
>+ }
>+ ret = true;
>+
>+out_dev:
>+ udev_device_unref(dev);
>+out:
>+ return ret;
>+}
>+
>+static void hdcp_udev_fini(struct udev_monitor *uevent_monitor,
>+ struct udev *udev)
>+{
>+ if (uevent_monitor)
>+ udev_monitor_unref(uevent_monitor);
>+ if (udev)
>+ udev_unref(udev);
>+}
>+
>+static int hdcp_udev_init(struct udev_monitor *uevent_monitor,
>+ struct udev *udev)
>+{
>+ int ret = -EINVAL;
>+
>+ udev = udev_new();
>+ if (!udev) {
>+ igt_info("failed to create udev object\n");
>+ goto out;
>+ }
>+
>+ uevent_monitor = udev_monitor_new_from_netlink(udev, "udev");
>+ if (!uevent_monitor) {
>+ igt_info("failed to create udev event monitor\n");
>+ goto out;
>+ }
>+
>+ ret = udev_monitor_filter_add_match_subsystem_devtype(uevent_monitor,
>+ "drm",
>+ "drm_minor");
>+ if (ret < 0) {
>+ igt_info("failed to filter for drm events\n");
>+ goto out;
>+ }
>+
>+ ret = udev_monitor_enable_receiving(uevent_monitor);
>+ if (ret < 0) {
>+ igt_info("failed to enable udev event reception\n");
>+ goto out;
>+ }
>+
>+ return udev_monitor_get_fd(uevent_monitor);
>+
>+out:
>+ hdcp_udev_fini(uevent_monitor, udev);
>+ return ret;
>+}
>+
>+#define MAX_EVENTS 10
>+static bool wait_for_hdcp_event(uint32_t conn_id, uint32_t prop_id,
>+ uint32_t timeout_mSec)
>+{
>+
>+ struct udev_monitor *uevent_monitor = NULL;
>+ struct udev *udev = NULL;
>+ int udev_fd, epoll_fd;
>+ struct epoll_event event, events[MAX_EVENTS];
>+ bool ret = false;
>+
>+ udev_fd = hdcp_udev_init(uevent_monitor, udev);
>+ if (udev_fd < 0)
>+ return false;
>+
>+ epoll_fd = epoll_create1(0);
>+ if (epoll_fd == -1) {
>+ igt_info("Failed to create epoll fd. %d\n", epoll_fd);
>+ goto out_ep_create;
>+ }
>+
>+ event.events = EPOLLIN | EPOLLERR;
>+ event.data.fd = 0;
>+
>+ if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, udev_fd, &event)) {
>+ igt_info("failed to fd into epoll\n");
>+ goto out_ep_ctl;
>+ }
>+
>+ if (epoll_wait(epoll_fd, events, MAX_EVENTS, timeout_mSec))
>+ ret = hdcp_event(uevent_monitor, udev, conn_id, prop_id);
>+
>+out_ep_ctl:
>+ if (close(epoll_fd))
>+ igt_info("failed to close the epoll fd\n");
>+out_ep_create:
>+ hdcp_udev_fini(uevent_monitor, udev);
>+ return ret;
>+}
>+
> static bool
> wait_for_prop_value(igt_output_t *output, uint64_t expected,
> uint32_t timeout_mSec)
>@@ -109,13 +244,26 @@ wait_for_prop_value(igt_output_t *output, uint64_t
>expected,
> uint64_t val;
> int i;
>
>- for (i = 0; i < timeout_mSec; i++) {
>+ if (data.cp_tests & CP_UEVENT) {
>+ if (wait_for_hdcp_event(output->id,
>+ output-
>>props[IGT_CONNECTOR_CONTENT_PROTECTION],
>+ timeout_mSec))
Here, this call can fail and it seems we will immediately come out and attempt a get
and will not go for usleep either. Handle this gracefully, else all look good to me.
With the above fixed.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>+ igt_debug("hdcp event received\n");
>+
> val = igt_output_get_prop(output,
>
>IGT_CONNECTOR_CONTENT_PROTECTION);
> if (val == expected)
> return true;
>- usleep(1000);
>+ } else {
>+ for (i = 0; i < timeout_mSec; i++) {
>+ val = igt_output_get_prop(output,
>+
>IGT_CONNECTOR_CONTENT_PROTECTION);
>+ if (val == expected)
>+ return true;
>+ usleep(1000);
>+ }
> }
>+
> igt_info("prop_value mismatch %" PRId64 " != %" PRId64 "\n",
> val, expected);
>
>@@ -493,6 +641,12 @@ igt_main
> test_content_protection(COMMIT_ATOMIC,
>HDCP_CONTENT_TYPE_1);
> }
>
>+ igt_subtest("uevent") {
>+ igt_require(data.display.is_atomic);
>+ data.cp_tests = CP_UEVENT;
>+ 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 14+ messages in thread
* [igt-dev] [PATCH i-g-t v7 7/8] kms_content_protection: SRM Testing
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (5 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 6/8] kms_content_protection: uevent for HDCP status change Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 8/8] DO NOT MERGE: CP in fast feedback list Ramalingam C
` (2 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
Since we don't any uAPI to retrieve the downstream's device's ksv,
we can't check the 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 hdcp authentication.
v2:
typos in commit msg is fixed. [Uma]
file mode is added. [GG]
reset test flag. [Uma]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
tests/kms_content_protection.c | 46 ++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index ab6a2da55c23..3ce5f0822ed1 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,27 @@ 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, S_IRWXU);
+ 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)
@@ -647,6 +674,25 @@ 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);
+ data.cp_tests = 0;
+ 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 14+ messages in thread* [igt-dev] [PATCH i-g-t v7 8/8] DO NOT MERGE: CP in fast feedback list
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (6 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 7/8] kms_content_protection: SRM Testing Ramalingam C
@ 2019-05-30 15:00 ` Ramalingam C
2019-05-31 10:53 ` [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests (rev7) Patchwork
2019-05-31 23:54 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
9 siblings, 0 replies; 14+ messages in thread
From: Ramalingam C @ 2019-05-30 15:00 UTC (permalink / raw)
To: uma.shankar, daniel.vetter, igt-dev
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 58e6b5c5f882..20834b0d296a 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -157,6 +157,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] 14+ messages in thread* [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests (rev7)
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (7 preceding siblings ...)
2019-05-30 15:00 ` [igt-dev] [PATCH i-g-t v7 8/8] DO NOT MERGE: CP in fast feedback list Ramalingam C
@ 2019-05-31 10:53 ` Patchwork
2019-05-31 23:54 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
9 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2019-05-31 10:53 UTC (permalink / raw)
To: Ramalingam C; +Cc: igt-dev
== Series Details ==
Series: HDCP2.2 Tests (rev7)
URL : https://patchwork.freedesktop.org/series/57756/
State : success
== Summary ==
CI Bug Log - changes from IGT_5026 -> IGTPW_3083
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57756/revisions/7/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_3083:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_content_protection@srm} (NEW):
- fi-cml-u: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-cml-u/igt@kms_content_protection@srm.html
- fi-icl-y: NOTRUN -> [SKIP][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-y/igt@kms_content_protection@srm.html
- fi-icl-dsi: NOTRUN -> [SKIP][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-dsi/igt@kms_content_protection@srm.html
- fi-skl-lmem: NOTRUN -> [FAIL][4]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-skl-lmem/igt@kms_content_protection@srm.html
- {fi-apl-guc}: NOTRUN -> [FAIL][5]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-apl-guc/igt@kms_content_protection@srm.html
- fi-cml-u2: NOTRUN -> [SKIP][6]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-cml-u2/igt@kms_content_protection@srm.html
New tests
---------
New tests have been introduced between IGT_5026 and IGTPW_3083:
### New IGT tests (1) ###
* igt@kms_content_protection@srm:
- Statuses : 1 dmesg-fail(s) 2 fail(s) 7 pass(s) 34 skip(s)
- Exec time: [0.0, 129.97] s
Known issues
------------
Here are the changes found in IGTPW_3083 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_module_load@reload-with-fault-injection:
- fi-skl-6770hq: [PASS][7] -> [DMESG-WARN][8] ([fdo#108529]) +1 similar issue
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
- fi-icl-u3: [PASS][9] -> [DMESG-WARN][10] ([fdo#107724]) +1 similar issue
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u3/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u3/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
* igt@kms_flip@basic-flip-vs-dpms:
- fi-skl-6770hq: [PASS][11] -> [SKIP][12] ([fdo#109271]) +23 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_frontbuffer_tracking@basic:
- fi-icl-dsi: [PASS][13] -> [FAIL][14] ([fdo#103167])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-dsi/igt@kms_frontbuffer_tracking@basic.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-dsi/igt@kms_frontbuffer_tracking@basic.html
- fi-icl-u2: [PASS][15] -> [FAIL][16] ([fdo#103167])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pipe_crc_basic@read-crc-pipe-b:
- fi-icl-dsi: [PASS][17] -> [DMESG-WARN][18] ([fdo#106107])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-dsi/igt@kms_pipe_crc_basic@read-crc-pipe-b.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-dsi/igt@kms_pipe_crc_basic@read-crc-pipe-b.html
#### Possible fixes ####
* igt@gem_ctx_switch@basic-default:
- {fi-icl-guc}: [INCOMPLETE][19] ([fdo#107713] / [fdo#108569]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-guc/igt@gem_ctx_switch@basic-default.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-guc/igt@gem_ctx_switch@basic-default.html
* igt@gem_wait@basic-await-all:
- fi-icl-u3: [DMESG-WARN][21] ([fdo#107724]) -> [PASS][22] +1 similar issue
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u3/igt@gem_wait@basic-await-all.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u3/igt@gem_wait@basic-await-all.html
* igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm: [DMESG-FAIL][23] ([fdo#110235]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
* igt@kms_frontbuffer_tracking@basic:
- fi-icl-u3: [FAIL][25] ([fdo#103167]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u3/igt@kms_frontbuffer_tracking@basic.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u3/igt@kms_frontbuffer_tracking@basic.html
#### Warnings ####
* igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq: [FAIL][27] ([fdo#108511]) -> [DMESG-WARN][28] ([fdo#108529])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html
- fi-icl-u3: [DMESG-WARN][29] ([fdo#107724] / [fdo#110801]) -> [DMESG-WARN][30] ([fdo#110801])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u3/igt@i915_pm_rpm@module-reload.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u3/igt@i915_pm_rpm@module-reload.html
* igt@i915_selftest@live_hangcheck:
- fi-icl-u3: [INCOMPLETE][31] ([fdo#107713] / [fdo#108569]) -> [DMESG-WARN][32] ([fdo#110801])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/fi-icl-u3/igt@i915_selftest@live_hangcheck.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/fi-icl-u3/igt@i915_selftest@live_hangcheck.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#106107]: https://bugs.freedesktop.org/show_bug.cgi?id=106107
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
[fdo#108529]: https://bugs.freedesktop.org/show_bug.cgi?id=108529
[fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235
[fdo#110801]: https://bugs.freedesktop.org/show_bug.cgi?id=110801
Participating hosts (50 -> 45)
------------------------------
Missing (5): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus
Build changes
-------------
* IGT: IGT_5026 -> IGTPW_3083
CI_DRM_6169: 5a82ae892e5928ad598f80d58398bd967051eabc @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3083: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_content_protection@content_type_change
+igt@kms_content_protection@lic
+igt@kms_content_protection@mei_interface
+igt@kms_content_protection@srm
+igt@kms_content_protection@type1
+igt@kms_content_protection@uevent
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 14+ messages in thread* [igt-dev] ✓ Fi.CI.IGT: success for HDCP2.2 Tests (rev7)
2019-05-30 15:00 [igt-dev] [PATCH i-g-t v7 0/8] HDCP2.2 Tests Ramalingam C
` (8 preceding siblings ...)
2019-05-31 10:53 ` [igt-dev] ✓ Fi.CI.BAT: success for HDCP2.2 Tests (rev7) Patchwork
@ 2019-05-31 23:54 ` Patchwork
9 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2019-05-31 23:54 UTC (permalink / raw)
To: Ramalingam C; +Cc: igt-dev
== Series Details ==
Series: HDCP2.2 Tests (rev7)
URL : https://patchwork.freedesktop.org/series/57756/
State : success
== Summary ==
CI Bug Log - changes from IGT_5026_full -> IGTPW_3083_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/57756/revisions/7/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_3083_full:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_content_protection@lic} (NEW):
- shard-apl: NOTRUN -> [FAIL][1] +2 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-apl6/igt@kms_content_protection@lic.html
* {igt@kms_content_protection@uevent} (NEW):
- shard-kbl: NOTRUN -> [FAIL][2] +2 similar issues
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-kbl2/igt@kms_content_protection@uevent.html
- shard-iclb: NOTRUN -> [SKIP][3] +3 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb1/igt@kms_content_protection@uevent.html
New tests
---------
New tests have been introduced between IGT_5026_full and IGTPW_3083_full:
### New IGT tests (6) ###
* igt@kms_content_protection@content_type_change:
- Statuses : 6 skip(s)
- Exec time: [0.0] s
* igt@kms_content_protection@lic:
- Statuses : 2 fail(s) 4 skip(s)
- Exec time: [0.0, 124.70] s
* igt@kms_content_protection@mei_interface:
- Statuses : 6 skip(s)
- Exec time: [0.01, 0.05] s
* igt@kms_content_protection@srm:
- Statuses : 2 fail(s) 3 skip(s)
- Exec time: [0.00, 124.51] s
* igt@kms_content_protection@type1:
- Statuses : 5 skip(s)
- Exec time: [0.0] s
* igt@kms_content_protection@uevent:
- Statuses : 2 fail(s) 4 skip(s)
- Exec time: [0.0, 107.14] s
Known issues
------------
Here are the changes found in IGTPW_3083_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_isolation@bcs0-s3:
- shard-apl: [PASS][4] -> [DMESG-WARN][5] ([fdo#108566]) +5 similar issues
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-apl7/igt@gem_ctx_isolation@bcs0-s3.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-apl4/igt@gem_ctx_isolation@bcs0-s3.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-kbl: [PASS][6] -> [DMESG-WARN][7] ([fdo#108566]) +1 similar issue
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-kbl1/igt@gem_workarounds@suspend-resume-fd.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-kbl6/igt@gem_workarounds@suspend-resume-fd.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-hsw: [PASS][8] -> [SKIP][9] ([fdo#109271]) +16 similar issues
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw4/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@dpms-vs-vblank-race-interruptible:
- shard-hsw: [PASS][10] -> [DMESG-FAIL][11] ([fdo#102614] / [fdo#103060])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw5/igt@kms_flip@dpms-vs-vblank-race-interruptible.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw5/igt@kms_flip@dpms-vs-vblank-race-interruptible.html
* igt@kms_flip@flip-vs-fences:
- shard-iclb: [PASS][12] -> [INCOMPLETE][13] ([fdo#107713])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb2/igt@kms_flip@flip-vs-fences.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb7/igt@kms_flip@flip-vs-fences.html
* igt@kms_frontbuffer_tracking@fbc-stridechange:
- shard-iclb: [PASS][14] -> [FAIL][15] ([fdo#103167]) +3 similar issues
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb5/igt@kms_frontbuffer_tracking@fbc-stridechange.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-stridechange.html
* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][16] -> [SKIP][17] ([fdo#109441])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html
* igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend:
- shard-glk: [PASS][18] -> [INCOMPLETE][19] ([fdo#103359] / [k.org#198133])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-glk1/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-glk6/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html
#### Possible fixes ####
* igt@gem_ctx_isolation@vecs0-s3:
- shard-kbl: [DMESG-WARN][20] ([fdo#108566]) -> [PASS][21] +1 similar issue
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-kbl6/igt@gem_ctx_isolation@vecs0-s3.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-kbl4/igt@gem_ctx_isolation@vecs0-s3.html
* igt@gem_userptr_blits@stress-mm-invalidate-close:
- shard-apl: [INCOMPLETE][22] ([fdo#103927]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-apl4/igt@gem_userptr_blits@stress-mm-invalidate-close.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-apl3/igt@gem_userptr_blits@stress-mm-invalidate-close.html
* igt@gem_workarounds@suspend-resume-context:
- shard-apl: [DMESG-WARN][24] ([fdo#108566]) -> [PASS][25] +7 similar issues
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-apl7/igt@gem_workarounds@suspend-resume-context.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-apl4/igt@gem_workarounds@suspend-resume-context.html
* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-kbl: [SKIP][26] ([fdo#109271]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-kbl7/igt@i915_pm_rc6_residency@rc6-accuracy.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-kbl7/igt@i915_pm_rc6_residency@rc6-accuracy.html
* igt@kms_atomic@plane_invalid_params:
- shard-hsw: [DMESG-WARN][28] ([fdo#102614]) -> [PASS][29] +2 similar issues
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw5/igt@kms_atomic@plane_invalid_params.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw4/igt@kms_atomic@plane_invalid_params.html
* igt@kms_color@pipe-a-gamma:
- shard-hsw: [DMESG-FAIL][30] ([fdo#102614]) -> [PASS][31]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw5/igt@kms_color@pipe-a-gamma.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw2/igt@kms_color@pipe-a-gamma.html
* igt@kms_flip@2x-flip-vs-fences:
- shard-hsw: [INCOMPLETE][32] ([fdo#103540]) -> [PASS][33]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw1/igt@kms_flip@2x-flip-vs-fences.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw5/igt@kms_flip@2x-flip-vs-fences.html
* igt@kms_flip@plain-flip-ts-check-interruptible:
- shard-glk: [FAIL][34] ([fdo#100368]) -> [PASS][35]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-glk8/igt@kms_flip@plain-flip-ts-check-interruptible.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-glk2/igt@kms_flip@plain-flip-ts-check-interruptible.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-hsw: [SKIP][36] ([fdo#109271]) -> [PASS][37] +18 similar issues
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-badstride:
- shard-iclb: [FAIL][38] ([fdo#103167]) -> [PASS][39] +3 similar issues
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-badstride.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb1/igt@kms_frontbuffer_tracking@fbc-badstride.html
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [SKIP][40] ([fdo#109642]) -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb7/igt@kms_psr2_su@frontbuffer.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb2/igt@kms_psr2_su@frontbuffer.html
* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [SKIP][42] ([fdo#109441]) -> [PASS][43] +2 similar issues
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb4/igt@kms_psr@psr2_cursor_mmap_cpu.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html
* igt@perf_pmu@rc6-runtime-pm-long:
- shard-iclb: [FAIL][44] ([fdo#105010]) -> [PASS][45]
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb8/igt@perf_pmu@rc6-runtime-pm-long.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb8/igt@perf_pmu@rc6-runtime-pm-long.html
- shard-glk: [FAIL][46] ([fdo#105010]) -> [PASS][47]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-glk9/igt@perf_pmu@rc6-runtime-pm-long.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-glk2/igt@perf_pmu@rc6-runtime-pm-long.html
- shard-hsw: [FAIL][48] ([fdo#105010]) -> [PASS][49]
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw6/igt@perf_pmu@rc6-runtime-pm-long.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw7/igt@perf_pmu@rc6-runtime-pm-long.html
#### Warnings ####
* igt@gem_mmap_gtt@forked-big-copy-xy:
- shard-iclb: [INCOMPLETE][50] ([fdo#107713] / [fdo#109100]) -> [TIMEOUT][51] ([fdo#109673]) +1 similar issue
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-iclb7/igt@gem_mmap_gtt@forked-big-copy-xy.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-iclb8/igt@gem_mmap_gtt@forked-big-copy-xy.html
* igt@gem_tiled_swapping@non-threaded:
- shard-glk: [DMESG-WARN][52] ([fdo#108686]) -> [FAIL][53] ([fdo#108686])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-glk5/igt@gem_tiled_swapping@non-threaded.html
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-glk3/igt@gem_tiled_swapping@non-threaded.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-hsw: [DMESG-WARN][54] ([fdo#102614]) -> [SKIP][55] ([fdo#109271])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5026/shard-hsw5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/shard-hsw1/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#100368]: https://bugs.freedesktop.org/show_bug.cgi?id=100368
[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#103060]: https://bugs.freedesktop.org/show_bug.cgi?id=103060
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#109673]: https://bugs.freedesktop.org/show_bug.cgi?id=109673
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (7 -> 6)
------------------------------
Missing (1): shard-skl
Build changes
-------------
* IGT: IGT_5026 -> IGTPW_3083
CI_DRM_6169: 5a82ae892e5928ad598f80d58398bd967051eabc @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3083: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3083/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 14+ messages in thread