* [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events
@ 2020-06-16 10:58 Ankit Nautiyal
2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events Ankit Nautiyal
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Ankit Nautiyal @ 2020-06-16 10:58 UTC (permalink / raw)
To: igt-dev
This patch-series modifies the igt_kms to add support to detect
connector events. This support is then used for detecting
HDCP events in kms_content_protection.
Ankit Nautiyal (2):
lib/igt_kms: Add support for detecting connector events
tests/kms_content_protection: Use library functions for handling
uevents
lib/igt_kms.c | 61 ++++++++++----
lib/igt_kms.h | 2 +
tests/kms_content_protection.c | 145 ++-------------------------------
3 files changed, 54 insertions(+), 154 deletions(-)
--
2.17.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 12+ messages in thread* [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events 2020-06-16 10:58 [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events Ankit Nautiyal @ 2020-06-16 10:58 ` Ankit Nautiyal 2020-06-16 14:12 ` Ramalingam C 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents Ankit Nautiyal ` (2 subsequent siblings) 3 siblings, 1 reply; 12+ messages in thread From: Ankit Nautiyal @ 2020-06-16 10:58 UTC (permalink / raw) To: igt-dev Currently, the event_detect function checks the property val for "HOTPLUG" and "LEASE" both of which are set to '1' when these events are sent. This cannot be used for detecting connector events such as HDCP event as connector events are sent along with property to signify which property of which connector has changed. Connector ID and property id are provided along with "CONNECTOR" and "PROPERTY" as udev property-value pairs. Eg. for HDCP, the connector id of the connector whose hdcp status changed, and the property id of the ‘CONTENT_PROTECTION’ property are sent with uevent. This patch modifies the event_detect function to check multiple properties with different expected values. It also adds support to detect connector event for a given pair of connector and property ids. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- lib/igt_kms.c | 61 ++++++++++++++++++++++++++++++++++++++------------- lib/igt_kms.h | 2 ++ 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 54de45e5..7177231e 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -4164,32 +4164,57 @@ struct udev_monitor *igt_watch_hotplug(void) } static bool event_detected(struct udev_monitor *mon, int timeout_secs, - const char *property) + const char **property, int *expected_val, int num_props) { struct udev_device *dev; - const char *hotplug_val; + const char *prop_val_str; struct pollfd fd = { .fd = udev_monitor_get_fd(mon), .events = POLLIN }; - bool hotplug_received = false; + bool event_received = false; + int i; - /* Go through all of the events pending on the udev monitor. Once we - * receive a hotplug, we continue going through the rest of the events - * so that redundant hotplug events don't change the results of future - * checks + /* Go through all of the events pending on the udev monitor. + * Match the given set of properties and their values to + * the expected values. */ - while (!hotplug_received && poll(&fd, 1, timeout_secs * 1000)) { + while (!event_received && poll(&fd, 1, timeout_secs * 1000)) { dev = udev_monitor_receive_device(mon); - - hotplug_val = udev_device_get_property_value(dev, property); - if (hotplug_val && atoi(hotplug_val) == 1) - hotplug_received = true; + for (i = 0; i < num_props; i++) { + event_received = true; + prop_val_str = udev_device_get_property_value(dev, property[i]); + if (!prop_val_str || atoi(prop_val_str) != expected_val[i]) { + event_received = false; + break; + } + } udev_device_unref(dev); } - return hotplug_received; + return event_received; +} + +/** + * igt_conn_event_detected: + * @mon: A udev monitor initialized with #igt_watch_hotplug + * @conn_id: Connector id of the Connector for which the property change is + * expected. + * @prop_id: Property id for which the change is expected. + * @timeout_secs: How long to wait for a connector event to occur. + * + * Assert that a connector event is received for a given connector and property. + * + * Returns: true if the connector event was received, false if we timed out + */ +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, + uint32_t prop_id, int timeout_secs) +{ + const char *props[2] = {"CONNECTOR", "PROPERTY"}; + int expected_val[2] = {conn_id, prop_id}; + + return event_detected(mon, timeout_secs, props, expected_val, 2); } /** @@ -4203,7 +4228,10 @@ static bool event_detected(struct udev_monitor *mon, int timeout_secs, */ bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) { - return event_detected(mon, timeout_secs, "HOTPLUG"); + const char *props[1] = {"HOTPLUG"}; + int expected_val = 1; + + return event_detected(mon, timeout_secs, props, &expected_val, 1); } /** @@ -4217,7 +4245,10 @@ bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) */ bool igt_lease_change_detected(struct udev_monitor *mon, int timeout_secs) { - return event_detected(mon, timeout_secs, "LEASE"); + const char *props[1] = {"LEASE"}; + int expected_val = 1; + + return event_detected(mon, timeout_secs, props, &expected_val, 1); } /** diff --git a/lib/igt_kms.h b/lib/igt_kms.h index cd3fdbc0..27f1f729 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -777,6 +777,8 @@ bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs); bool igt_lease_change_detected(struct udev_monitor *mon, int timeout_secs); +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, + uint32_t prop_id, int timeout_msecs); void igt_flush_hotplugs(struct udev_monitor *mon); void igt_cleanup_hotplug(struct udev_monitor *mon); -- 2.17.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events Ankit Nautiyal @ 2020-06-16 14:12 ` Ramalingam C 2020-06-17 6:23 ` Nautiyal, Ankit K 0 siblings, 1 reply; 12+ messages in thread From: Ramalingam C @ 2020-06-16 14:12 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: igt-dev On 2020-06-16 at 16:28:11 +0530, Ankit Nautiyal wrote: > Currently, the event_detect function checks the property val for > "HOTPLUG" and "LEASE" both of which are set to '1' when these events > are sent. > > This cannot be used for detecting connector events such as HDCP event > as connector events are sent along with property to signify which > property of which connector has changed. Connector ID and property id > are provided along with "CONNECTOR" and "PROPERTY" as udev > property-value pairs. Eg. for HDCP, the connector id of the connector > whose hdcp status changed, and the property id of the > ‘CONTENT_PROTECTION’ property are sent with uevent. > > This patch modifies the event_detect function to check multiple > properties with different expected values. It also adds support to > detect connector event for a given pair of connector and property ids. > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > --- > lib/igt_kms.c | 61 ++++++++++++++++++++++++++++++++++++++------------- > lib/igt_kms.h | 2 ++ > 2 files changed, 48 insertions(+), 15 deletions(-) > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > index 54de45e5..7177231e 100644 > --- a/lib/igt_kms.c > +++ b/lib/igt_kms.c > @@ -4164,32 +4164,57 @@ struct udev_monitor *igt_watch_hotplug(void) > } > > static bool event_detected(struct udev_monitor *mon, int timeout_secs, > - const char *property) > + const char **property, int *expected_val, int num_props) > { > struct udev_device *dev; > - const char *hotplug_val; > + const char *prop_val_str; > struct pollfd fd = { > .fd = udev_monitor_get_fd(mon), > .events = POLLIN > }; > - bool hotplug_received = false; > + bool event_received = false; > + int i; > > - /* Go through all of the events pending on the udev monitor. Once we > - * receive a hotplug, we continue going through the rest of the events > - * so that redundant hotplug events don't change the results of future > - * checks > + /* Go through all of the events pending on the udev monitor. > + * Match the given set of properties and their values to > + * the expected values. > */ > - while (!hotplug_received && poll(&fd, 1, timeout_secs * 1000)) { > + while (!event_received && poll(&fd, 1, timeout_secs * 1000)) { > dev = udev_monitor_receive_device(mon); > - > - hotplug_val = udev_device_get_property_value(dev, property); > - if (hotplug_val && atoi(hotplug_val) == 1) > - hotplug_received = true; > + for (i = 0; i < num_props; i++) { > + event_received = true; Not needed. > + prop_val_str = udev_device_get_property_value(dev, property[i]); > + if (!prop_val_str || atoi(prop_val_str) != expected_val[i]) { > + event_received = false; Not needed. > + break; > + } > + } if (i == num_props) event_received = true; > > udev_device_unref(dev); > } > > - return hotplug_received; > + return event_received; > +} > + > +/** > + * igt_conn_event_detected: > + * @mon: A udev monitor initialized with #igt_watch_hotplug > + * @conn_id: Connector id of the Connector for which the property change is > + * expected. > + * @prop_id: Property id for which the change is expected. > + * @timeout_secs: How long to wait for a connector event to occur. > + * > + * Assert that a connector event is received for a given connector and property. > + * > + * Returns: true if the connector event was received, false if we timed out > + */ > +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, > + uint32_t prop_id, int timeout_secs) > +{ > + const char *props[2] = {"CONNECTOR", "PROPERTY"}; > + int expected_val[2] = {conn_id, prop_id}; > + > + return event_detected(mon, timeout_secs, props, expected_val, 2); > } > > /** > @@ -4203,7 +4228,10 @@ static bool event_detected(struct udev_monitor *mon, int timeout_secs, > */ > bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) > { > - return event_detected(mon, timeout_secs, "HOTPLUG"); > + const char *props[1] = {"HOTPLUG"}; > + int expected_val = 1; > + > + return event_detected(mon, timeout_secs, props, &expected_val, 1); > } > > /** > @@ -4217,7 +4245,10 @@ bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) > */ > bool igt_lease_change_detected(struct udev_monitor *mon, int timeout_secs) > { > - return event_detected(mon, timeout_secs, "LEASE"); > + const char *props[1] = {"LEASE"}; > + int expected_val = 1; > + > + return event_detected(mon, timeout_secs, props, &expected_val, 1); > } > > /** > diff --git a/lib/igt_kms.h b/lib/igt_kms.h > index cd3fdbc0..27f1f729 100644 > --- a/lib/igt_kms.h > +++ b/lib/igt_kms.h > @@ -777,6 +777,8 @@ bool igt_hotplug_detected(struct udev_monitor *mon, > int timeout_secs); > bool igt_lease_change_detected(struct udev_monitor *mon, > int timeout_secs); > +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, > + uint32_t prop_id, int timeout_msecs); > void igt_flush_hotplugs(struct udev_monitor *mon); We need to have generich flush too like igt_(watch/flush/cleanup)_udev_event() -Ram > void igt_cleanup_hotplug(struct udev_monitor *mon); > > -- > 2.17.1 > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events 2020-06-16 14:12 ` Ramalingam C @ 2020-06-17 6:23 ` Nautiyal, Ankit K 0 siblings, 0 replies; 12+ messages in thread From: Nautiyal, Ankit K @ 2020-06-17 6:23 UTC (permalink / raw) To: Ramalingam C; +Cc: igt-dev Hi Ram, Thanks for the review comments. Please find my response inline: On 6/16/2020 7:42 PM, Ramalingam C wrote: > On 2020-06-16 at 16:28:11 +0530, Ankit Nautiyal wrote: >> Currently, the event_detect function checks the property val for >> "HOTPLUG" and "LEASE" both of which are set to '1' when these events >> are sent. >> >> This cannot be used for detecting connector events such as HDCP event >> as connector events are sent along with property to signify which >> property of which connector has changed. Connector ID and property id >> are provided along with "CONNECTOR" and "PROPERTY" as udev >> property-value pairs. Eg. for HDCP, the connector id of the connector >> whose hdcp status changed, and the property id of the >> ‘CONTENT_PROTECTION’ property are sent with uevent. >> >> This patch modifies the event_detect function to check multiple >> properties with different expected values. It also adds support to >> detect connector event for a given pair of connector and property ids. >> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >> --- >> lib/igt_kms.c | 61 ++++++++++++++++++++++++++++++++++++++------------- >> lib/igt_kms.h | 2 ++ >> 2 files changed, 48 insertions(+), 15 deletions(-) >> >> diff --git a/lib/igt_kms.c b/lib/igt_kms.c >> index 54de45e5..7177231e 100644 >> --- a/lib/igt_kms.c >> +++ b/lib/igt_kms.c >> @@ -4164,32 +4164,57 @@ struct udev_monitor *igt_watch_hotplug(void) >> } >> >> static bool event_detected(struct udev_monitor *mon, int timeout_secs, >> - const char *property) >> + const char **property, int *expected_val, int num_props) >> { >> struct udev_device *dev; >> - const char *hotplug_val; >> + const char *prop_val_str; >> struct pollfd fd = { >> .fd = udev_monitor_get_fd(mon), >> .events = POLLIN >> }; >> - bool hotplug_received = false; >> + bool event_received = false; >> + int i; >> >> - /* Go through all of the events pending on the udev monitor. Once we >> - * receive a hotplug, we continue going through the rest of the events >> - * so that redundant hotplug events don't change the results of future >> - * checks >> + /* Go through all of the events pending on the udev monitor. >> + * Match the given set of properties and their values to >> + * the expected values. >> */ >> - while (!hotplug_received && poll(&fd, 1, timeout_secs * 1000)) { >> + while (!event_received && poll(&fd, 1, timeout_secs * 1000)) { >> dev = udev_monitor_receive_device(mon); >> - >> - hotplug_val = udev_device_get_property_value(dev, property); >> - if (hotplug_val && atoi(hotplug_val) == 1) >> - hotplug_received = true; >> + for (i = 0; i < num_props; i++) { >> + event_received = true; > Not needed. >> + prop_val_str = udev_device_get_property_value(dev, property[i]); >> + if (!prop_val_str || atoi(prop_val_str) != expected_val[i]) { >> + event_received = false; > Not needed. >> + break; >> + } >> + } > if (i == num_props) > event_received = true; Agreed, this is much elegant. Will use this in the next version. >> >> udev_device_unref(dev); >> } >> >> - return hotplug_received; >> + return event_received; >> +} >> + >> +/** >> + * igt_conn_event_detected: >> + * @mon: A udev monitor initialized with #igt_watch_hotplug >> + * @conn_id: Connector id of the Connector for which the property change is >> + * expected. >> + * @prop_id: Property id for which the change is expected. >> + * @timeout_secs: How long to wait for a connector event to occur. >> + * >> + * Assert that a connector event is received for a given connector and property. >> + * >> + * Returns: true if the connector event was received, false if we timed out >> + */ >> +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, >> + uint32_t prop_id, int timeout_secs) >> +{ >> + const char *props[2] = {"CONNECTOR", "PROPERTY"}; >> + int expected_val[2] = {conn_id, prop_id}; >> + >> + return event_detected(mon, timeout_secs, props, expected_val, 2); >> } >> >> /** >> @@ -4203,7 +4228,10 @@ static bool event_detected(struct udev_monitor *mon, int timeout_secs, >> */ >> bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) >> { >> - return event_detected(mon, timeout_secs, "HOTPLUG"); >> + const char *props[1] = {"HOTPLUG"}; >> + int expected_val = 1; >> + >> + return event_detected(mon, timeout_secs, props, &expected_val, 1); >> } >> >> /** >> @@ -4217,7 +4245,10 @@ bool igt_hotplug_detected(struct udev_monitor *mon, int timeout_secs) >> */ >> bool igt_lease_change_detected(struct udev_monitor *mon, int timeout_secs) >> { >> - return event_detected(mon, timeout_secs, "LEASE"); >> + const char *props[1] = {"LEASE"}; >> + int expected_val = 1; >> + >> + return event_detected(mon, timeout_secs, props, &expected_val, 1); >> } >> >> /** >> diff --git a/lib/igt_kms.h b/lib/igt_kms.h >> index cd3fdbc0..27f1f729 100644 >> --- a/lib/igt_kms.h >> +++ b/lib/igt_kms.h >> @@ -777,6 +777,8 @@ bool igt_hotplug_detected(struct udev_monitor *mon, >> int timeout_secs); >> bool igt_lease_change_detected(struct udev_monitor *mon, >> int timeout_secs); >> +bool igt_conn_event_detected(struct udev_monitor *mon, uint32_t conn_id, >> + uint32_t prop_id, int timeout_msecs); >> void igt_flush_hotplugs(struct udev_monitor *mon); > We need to have generich flush too like igt_(watch/flush/cleanup)_udev_event() I am open to generic names, more about this discussed in the next patch 2/2. Regards, Ankit > -Ram >> void igt_cleanup_hotplug(struct udev_monitor *mon); >> >> -- >> 2.17.1 >> _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-16 10:58 [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events Ankit Nautiyal 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events Ankit Nautiyal @ 2020-06-16 10:58 ` Ankit Nautiyal 2020-06-16 14:03 ` Ramalingam C 2020-06-16 16:45 ` [igt-dev] ✓ Fi.CI.BAT: success for Add support to detect HDCP events Patchwork 2020-06-16 17:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 3 siblings, 1 reply; 12+ messages in thread From: Ankit Nautiyal @ 2020-06-16 10:58 UTC (permalink / raw) To: igt-dev Currently, the test has its own version of uevent handling used for detecting hdcp events. This patch modifies the test to use the igt_kms lib support for handling the uevent monitor and detect hdcp events. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- tests/kms_content_protection.c | 145 ++------------------------------- 1 file changed, 6 insertions(+), 139 deletions(-) diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c index 3b9cedcb..475a5089 100644 --- a/tests/kms_content_protection.c +++ b/tests/kms_content_protection.c @@ -39,6 +39,7 @@ struct data { igt_display_t display; struct igt_fb red, green; unsigned int cp_tests; + struct udev_monitor *uevent_monitor; } data; /* Test flags */ @@ -112,143 +113,6 @@ 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 *udev_fd) -{ - 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; - } - - *udev_fd = udev_monitor_get_fd(*uevent_monitor); - if (*udev_fd < 0) { - igt_info("failed to get udev_fd on uevent monitor\n"); - ret = *udev_fd; - goto out; - } - - return ret; - -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; - - if (hdcp_udev_init(&uevent_monitor, &udev, &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) @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, int i; if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { - igt_assert_f(wait_for_hdcp_event(output->id, + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, output->props[IGT_CONNECTOR_CONTENT_PROTECTION], - timeout_mSec), "uevent is not received"); + timeout_mSec / 1000), "uevent is not received"); val = igt_output_get_prop(output, IGT_CONNECTOR_CONTENT_PROTECTION); @@ -702,7 +566,10 @@ igt_main igt_subtest("uevent") { igt_require(data.display.is_atomic); data.cp_tests = CP_UEVENT; + data.uevent_monitor = igt_watch_hotplug(); + igt_flush_hotplugs(data.uevent_monitor); test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0); + igt_cleanup_hotplug(data.uevent_monitor); } /* -- 2.17.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents Ankit Nautiyal @ 2020-06-16 14:03 ` Ramalingam C 2020-06-16 14:10 ` Arkadiusz Hiler 2020-06-17 4:18 ` Anshuman Gupta 0 siblings, 2 replies; 12+ messages in thread From: Ramalingam C @ 2020-06-16 14:03 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: igt-dev On 2020-06-16 at 16:28:12 +0530, Ankit Nautiyal wrote: > Currently, the test has its own version of uevent handling used > for detecting hdcp events. This patch modifies the test to use > the igt_kms lib support for handling the uevent monitor and detect > hdcp events. > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > --- > tests/kms_content_protection.c | 145 ++------------------------------- > 1 file changed, 6 insertions(+), 139 deletions(-) > > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > index 3b9cedcb..475a5089 100644 > --- a/tests/kms_content_protection.c > +++ b/tests/kms_content_protection.c > @@ -39,6 +39,7 @@ struct data { > igt_display_t display; > struct igt_fb red, green; > unsigned int cp_tests; > + struct udev_monitor *uevent_monitor; > } data; > > /* Test flags */ > @@ -112,143 +113,6 @@ 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 *udev_fd) > -{ > - 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; > - } > - > - *udev_fd = udev_monitor_get_fd(*uevent_monitor); > - if (*udev_fd < 0) { > - igt_info("failed to get udev_fd on uevent monitor\n"); > - ret = *udev_fd; > - goto out; > - } > - > - return ret; > - > -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; > - > - if (hdcp_udev_init(&uevent_monitor, &udev, &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) > @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, > int i; > > if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { > - igt_assert_f(wait_for_hdcp_event(output->id, > + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, > output->props[IGT_CONNECTOR_CONTENT_PROTECTION], > - timeout_mSec), "uevent is not received"); > + timeout_mSec / 1000), "uevent is not received"); > > val = igt_output_get_prop(output, > IGT_CONNECTOR_CONTENT_PROTECTION); > @@ -702,7 +566,10 @@ igt_main > igt_subtest("uevent") { > igt_require(data.display.is_atomic); > data.cp_tests = CP_UEVENT; > + data.uevent_monitor = igt_watch_hotplug(); Ankit, this is really good. Any benefit with sporadic hdcp event missing issue? I would prefer to create generic implementations like igt_watch_udev. Similarly for igt_flush_hotplugs and igt_cleanup_hotplug. -Ram. > + igt_flush_hotplugs(data.uevent_monitor); > test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0); > + igt_cleanup_hotplug(data.uevent_monitor); > } > > /* > -- > 2.17.1 > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-16 14:03 ` Ramalingam C @ 2020-06-16 14:10 ` Arkadiusz Hiler 2020-06-16 14:17 ` Ramalingam C 2020-06-17 4:18 ` Anshuman Gupta 1 sibling, 1 reply; 12+ messages in thread From: Arkadiusz Hiler @ 2020-06-16 14:10 UTC (permalink / raw) To: Ramalingam C; +Cc: igt-dev On Tue, Jun 16, 2020 at 07:33:04PM +0530, Ramalingam C wrote: > On 2020-06-16 at 16:28:12 +0530, Ankit Nautiyal wrote: > > Currently, the test has its own version of uevent handling used > > for detecting hdcp events. This patch modifies the test to use > > the igt_kms lib support for handling the uevent monitor and detect > > hdcp events. > > > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > > --- > > tests/kms_content_protection.c | 145 ++------------------------------- > > 1 file changed, 6 insertions(+), 139 deletions(-) > > > > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > > index 3b9cedcb..475a5089 100644 > > --- a/tests/kms_content_protection.c > > +++ b/tests/kms_content_protection.c > > @@ -39,6 +39,7 @@ struct data { > > igt_display_t display; > > struct igt_fb red, green; > > unsigned int cp_tests; > > + struct udev_monitor *uevent_monitor; > > } data; > > > > /* Test flags */ > > @@ -112,143 +113,6 @@ 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 *udev_fd) > > -{ > > - 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; > > - } > > - > > - *udev_fd = udev_monitor_get_fd(*uevent_monitor); > > - if (*udev_fd < 0) { > > - igt_info("failed to get udev_fd on uevent monitor\n"); > > - ret = *udev_fd; > > - goto out; > > - } > > - > > - return ret; > > - > > -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; > > - > > - if (hdcp_udev_init(&uevent_monitor, &udev, &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) > > @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, > > int i; > > > > if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { > > - igt_assert_f(wait_for_hdcp_event(output->id, > > + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, > > output->props[IGT_CONNECTOR_CONTENT_PROTECTION], > > - timeout_mSec), "uevent is not received"); > > + timeout_mSec / 1000), "uevent is not received"); > > > > val = igt_output_get_prop(output, > > IGT_CONNECTOR_CONTENT_PROTECTION); > > @@ -702,7 +566,10 @@ igt_main > > igt_subtest("uevent") { > > igt_require(data.display.is_atomic); > > data.cp_tests = CP_UEVENT; > > + data.uevent_monitor = igt_watch_hotplug(); > Ankit, this is really good. > > Any benefit with sporadic hdcp event missing issue? > > I would prefer to create generic implementations like igt_watch_udev. > Similarly for igt_flush_hotplugs and igt_cleanup_hotplug. > > -Ram. Agreed, the change is definatetly in the right direction! :-) I am not sure wheter there is a need to create something "new", but at least having a bit more generic names for the existing fuctions would be nice. -- Cheers, Arek _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-16 14:10 ` Arkadiusz Hiler @ 2020-06-16 14:17 ` Ramalingam C 0 siblings, 0 replies; 12+ messages in thread From: Ramalingam C @ 2020-06-16 14:17 UTC (permalink / raw) To: Arkadiusz Hiler; +Cc: igt-dev On 2020-06-16 at 17:10:15 +0300, Arkadiusz Hiler wrote: > On Tue, Jun 16, 2020 at 07:33:04PM +0530, Ramalingam C wrote: > > On 2020-06-16 at 16:28:12 +0530, Ankit Nautiyal wrote: > > > Currently, the test has its own version of uevent handling used > > > for detecting hdcp events. This patch modifies the test to use > > > the igt_kms lib support for handling the uevent monitor and detect > > > hdcp events. > > > > > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > > > --- > > > tests/kms_content_protection.c | 145 ++------------------------------- > > > 1 file changed, 6 insertions(+), 139 deletions(-) > > > > > > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > > > index 3b9cedcb..475a5089 100644 > > > --- a/tests/kms_content_protection.c > > > +++ b/tests/kms_content_protection.c > > > @@ -39,6 +39,7 @@ struct data { > > > igt_display_t display; > > > struct igt_fb red, green; > > > unsigned int cp_tests; > > > + struct udev_monitor *uevent_monitor; > > > } data; > > > > > > /* Test flags */ > > > @@ -112,143 +113,6 @@ 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 *udev_fd) > > > -{ > > > - 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; > > > - } > > > - > > > - *udev_fd = udev_monitor_get_fd(*uevent_monitor); > > > - if (*udev_fd < 0) { > > > - igt_info("failed to get udev_fd on uevent monitor\n"); > > > - ret = *udev_fd; > > > - goto out; > > > - } > > > - > > > - return ret; > > > - > > > -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; > > > - > > > - if (hdcp_udev_init(&uevent_monitor, &udev, &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) > > > @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, > > > int i; > > > > > > if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { > > > - igt_assert_f(wait_for_hdcp_event(output->id, > > > + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, > > > output->props[IGT_CONNECTOR_CONTENT_PROTECTION], > > > - timeout_mSec), "uevent is not received"); > > > + timeout_mSec / 1000), "uevent is not received"); > > > > > > val = igt_output_get_prop(output, > > > IGT_CONNECTOR_CONTENT_PROTECTION); > > > @@ -702,7 +566,10 @@ igt_main > > > igt_subtest("uevent") { > > > igt_require(data.display.is_atomic); > > > data.cp_tests = CP_UEVENT; > > > + data.uevent_monitor = igt_watch_hotplug(); > > Ankit, this is really good. > > > > Any benefit with sporadic hdcp event missing issue? > > > > I would prefer to create generic implementations like igt_watch_udev. > > Similarly for igt_flush_hotplugs and igt_cleanup_hotplug. > > > > -Ram. > > Agreed, the change is definatetly in the right direction! :-) > > I am not sure wheter there is a need to create something "new", but at > least having a bit more generic names for the existing fuctions would be > nice. Agreed. Considering, only three igt files are using these funcs we could rename them. -Ram > > -- > Cheers, > Arek _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-16 14:03 ` Ramalingam C 2020-06-16 14:10 ` Arkadiusz Hiler @ 2020-06-17 4:18 ` Anshuman Gupta 2020-06-17 6:24 ` Nautiyal, Ankit K 1 sibling, 1 reply; 12+ messages in thread From: Anshuman Gupta @ 2020-06-17 4:18 UTC (permalink / raw) To: Ramalingam C; +Cc: igt-dev On 2020-06-16 at 19:33:04 +0530, Ramalingam C wrote: > On 2020-06-16 at 16:28:12 +0530, Ankit Nautiyal wrote: > > Currently, the test has its own version of uevent handling used > > for detecting hdcp events. This patch modifies the test to use > > the igt_kms lib support for handling the uevent monitor and detect > > hdcp events. > > > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > > --- > > tests/kms_content_protection.c | 145 ++------------------------------- > > 1 file changed, 6 insertions(+), 139 deletions(-) > > > > diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c > > index 3b9cedcb..475a5089 100644 > > --- a/tests/kms_content_protection.c > > +++ b/tests/kms_content_protection.c > > @@ -39,6 +39,7 @@ struct data { > > igt_display_t display; > > struct igt_fb red, green; > > unsigned int cp_tests; > > + struct udev_monitor *uevent_monitor; > > } data; > > > > /* Test flags */ > > @@ -112,143 +113,6 @@ 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 *udev_fd) > > -{ > > - 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; > > - } > > - > > - *udev_fd = udev_monitor_get_fd(*uevent_monitor); > > - if (*udev_fd < 0) { > > - igt_info("failed to get udev_fd on uevent monitor\n"); > > - ret = *udev_fd; > > - goto out; > > - } > > - > > - return ret; > > - > > -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; > > - > > - if (hdcp_udev_init(&uevent_monitor, &udev, &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) > > @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, > > int i; > > > > if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { > > - igt_assert_f(wait_for_hdcp_event(output->id, > > + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, > > output->props[IGT_CONNECTOR_CONTENT_PROTECTION], > > - timeout_mSec), "uevent is not received"); > > + timeout_mSec / 1000), "uevent is not received"); > > > > val = igt_output_get_prop(output, > > IGT_CONNECTOR_CONTENT_PROTECTION); > > @@ -702,7 +566,10 @@ igt_main > > igt_subtest("uevent") { > > igt_require(data.display.is_atomic); > > data.cp_tests = CP_UEVENT; > > + data.uevent_monitor = igt_watch_hotplug(); > Ankit, this is really good. > > Any benefit with sporadic hdcp event missing issue? yes there is absolute benifit wait_for_hdcp_event() every times prepare a necessary infrasture before triggering epoll_wait(). Sometimes due to scheduling delays connector HOTPLUG events get disposed even before a call to epoll_wait() here. Many thanks to Arek here for debugging inputs by "udev monitor". > > I would prefer to create generic implementations like igt_watch_udev. > Similarly for igt_flush_hotplugs and igt_cleanup_hotplug. There are two calls from kerenl for HOTPLUG uevent. drm_sysfs_hotplug_event -> for HOTPLUG events only with HOTPLUG=1 string drm_sysfs_connector_status_event-> for HOTPLUG events with additional connector id and prop id string. so i belive in line to that there is no need to change existing API name change. Probably igt_conn_event_detected can be changed to igt_connector_hotplug_detected or igt_connector_event_detected for more readability. Thanks, Anshuman Gupta. > > -Ram. > > + igt_flush_hotplugs(data.uevent_monitor); > > test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0); > > + igt_cleanup_hotplug(data.uevent_monitor); > > } > > > > /* > > -- > > 2.17.1 > > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents 2020-06-17 4:18 ` Anshuman Gupta @ 2020-06-17 6:24 ` Nautiyal, Ankit K 0 siblings, 0 replies; 12+ messages in thread From: Nautiyal, Ankit K @ 2020-06-17 6:24 UTC (permalink / raw) To: Anshuman Gupta, Ramalingam C, arkadiusz.hiler; +Cc: igt-dev Hi Ram, Arek, and Anshuman, Thanks for your comments and suggestions. As we are discussing about the naming of the APIs, I have taken liberty to reply in a single mail. Please find my responses inline: On 6/17/2020 9:48 AM, Anshuman Gupta wrote: > On 2020-06-16 at 19:33:04 +0530, Ramalingam C wrote: >> On 2020-06-16 at 16:28:12 +0530, Ankit Nautiyal wrote: >>> Currently, the test has its own version of uevent handling used >>> for detecting hdcp events. This patch modifies the test to use >>> the igt_kms lib support for handling the uevent monitor and detect >>> hdcp events. >>> >>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >>> --- >>> tests/kms_content_protection.c | 145 ++------------------------------- >>> 1 file changed, 6 insertions(+), 139 deletions(-) >>> >>> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c >>> index 3b9cedcb..475a5089 100644 >>> --- a/tests/kms_content_protection.c >>> +++ b/tests/kms_content_protection.c >>> @@ -39,6 +39,7 @@ struct data { >>> igt_display_t display; >>> struct igt_fb red, green; >>> unsigned int cp_tests; >>> + struct udev_monitor *uevent_monitor; >>> } data; >>> >>> /* Test flags */ >>> @@ -112,143 +113,6 @@ 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 *udev_fd) >>> -{ >>> - 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; >>> - } >>> - >>> - *udev_fd = udev_monitor_get_fd(*uevent_monitor); >>> - if (*udev_fd < 0) { >>> - igt_info("failed to get udev_fd on uevent monitor\n"); >>> - ret = *udev_fd; >>> - goto out; >>> - } >>> - >>> - return ret; >>> - >>> -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; >>> - >>> - if (hdcp_udev_init(&uevent_monitor, &udev, &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) >>> @@ -257,9 +121,9 @@ wait_for_prop_value(igt_output_t *output, uint64_t expected, >>> int i; >>> >>> if (data.cp_tests & CP_UEVENT && expected != CP_UNDESIRED) { >>> - igt_assert_f(wait_for_hdcp_event(output->id, >>> + igt_assert_f(igt_conn_event_detected(data.uevent_monitor, output->id, >>> output->props[IGT_CONNECTOR_CONTENT_PROTECTION], >>> - timeout_mSec), "uevent is not received"); >>> + timeout_mSec / 1000), "uevent is not received"); >>> >>> val = igt_output_get_prop(output, >>> IGT_CONNECTOR_CONTENT_PROTECTION); >>> @@ -702,7 +566,10 @@ igt_main >>> igt_subtest("uevent") { >>> igt_require(data.display.is_atomic); >>> data.cp_tests = CP_UEVENT; >>> + data.uevent_monitor = igt_watch_hotplug(); >> Ankit, this is really good. >> >> Any benefit with sporadic hdcp event missing issue? > yes there is absolute benifit wait_for_hdcp_event() every times > prepare a necessary infrasture before triggering epoll_wait(). > Sometimes due to scheduling delays connector HOTPLUG events get disposed > even before a call to epoll_wait() here. > Many thanks to Arek here for debugging inputs by "udev monitor". The missing hdcp uevent issuse, seems to be quite sporadic, and I was not able to reproduce with/without patch. But this certainly should help in that case, as mentioned by Anshuman. >> I would prefer to create generic implementations like igt_watch_udev. >> Similarly for igt_flush_hotplugs and igt_cleanup_hotplug. > There are two calls from kerenl for HOTPLUG uevent. > drm_sysfs_hotplug_event -> for HOTPLUG events only with HOTPLUG=1 string > drm_sysfs_connector_status_event-> for HOTPLUG events with additional > connector id and prop id string. so i belive in line to that there > is no need to change existing API name change. > Probably igt_conn_event_detected can be changed to > igt_connector_hotplug_detected or igt_connector_event_detected for more > readability. > Thanks, > Anshuman Gupta. As mentioned by Anshuman, both the calls have HOTPLUG=1 string, so we can let the APIs same if we want. But I am open for suggestions on naming here if it makes sense to have a generic name with future requirements in mind. Regarding the igt_conn_event_detected() I can change the name here as well to igt_connector_hotplug_detected(). But I have not added checking for HOTPLUG=1 for hdcp event. Probably I should add that as well along with "CONNECTOR" and "PROPERTY", in line with the current IGT, and also as in the weston userspace. Thanks & Regards, Ankit >> -Ram. >>> + igt_flush_hotplugs(data.uevent_monitor); >>> test_content_protection(COMMIT_ATOMIC, HDCP_CONTENT_TYPE_0); >>> + igt_cleanup_hotplug(data.uevent_monitor); >>> } >>> >>> /* >>> -- >>> 2.17.1 >>> _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for Add support to detect HDCP events 2020-06-16 10:58 [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events Ankit Nautiyal 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events Ankit Nautiyal 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents Ankit Nautiyal @ 2020-06-16 16:45 ` Patchwork 2020-06-16 17:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 3 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2020-06-16 16:45 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: igt-dev == Series Details == Series: Add support to detect HDCP events URL : https://patchwork.freedesktop.org/series/78413/ State : success == Summary == CI Bug Log - changes from CI_DRM_8634 -> IGTPW_4676 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/index.html Known issues ------------ Here are the changes found in IGTPW_4676 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_rpm@module-reload: - fi-kbl-guc: [PASS][1] -> [SKIP][2] ([fdo#109271]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-kbl-guc/igt@i915_pm_rpm@module-reload.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-kbl-guc/igt@i915_pm_rpm@module-reload.html * igt@kms_chamelium@dp-crc-fast: - fi-kbl-7500u: [PASS][3] -> [FAIL][4] ([i915#262]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-kbl-7500u/igt@kms_chamelium@dp-crc-fast.html * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence: - fi-tgl-u2: [PASS][5] -> [DMESG-WARN][6] ([i915#402]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-tgl-u2/igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-tgl-u2/igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence.html #### Possible fixes #### * igt@i915_module_load@reload: - fi-tgl-u2: [DMESG-WARN][7] ([i915#402]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-tgl-u2/igt@i915_module_load@reload.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-tgl-u2/igt@i915_module_load@reload.html * igt@i915_pm_rpm@basic-pci-d3-state: - fi-byt-j1900: [DMESG-WARN][9] ([i915#1982]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-byt-j1900/igt@i915_pm_rpm@basic-pci-d3-state.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-byt-j1900/igt@i915_pm_rpm@basic-pci-d3-state.html - fi-bsw-kefka: [DMESG-WARN][11] ([i915#1982]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html * igt@i915_selftest@live@gt_lrc: - fi-tgl-u2: [DMESG-FAIL][13] ([i915#1233]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-tgl-u2/igt@i915_selftest@live@gt_lrc.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-tgl-u2/igt@i915_selftest@live@gt_lrc.html #### Warnings #### * igt@gem_exec_suspend@basic-s0: - fi-kbl-x1275: [DMESG-WARN][15] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][16] ([i915#1982] / [i915#62] / [i915#92]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy: - fi-kbl-x1275: [DMESG-WARN][17] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][18] ([i915#62] / [i915#92]) +6 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html * igt@prime_vgem@basic-fence-flip: - fi-kbl-x1275: [DMESG-WARN][19] ([i915#62] / [i915#92]) -> [DMESG-WARN][20] ([i915#62] / [i915#92] / [i915#95]) +2 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/fi-kbl-x1275/igt@prime_vgem@basic-fence-flip.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/fi-kbl-x1275/igt@prime_vgem@basic-fence-flip.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#1233]: https://gitlab.freedesktop.org/drm/intel/issues/1233 [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#262]: https://gitlab.freedesktop.org/drm/intel/issues/262 [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (48 -> 42) ------------------------------ Missing (6): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-tgl-y fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_5711 -> IGTPW_4676 CI-20190529: 20190529 CI_DRM_8634: 72c556b3627adef8cef3b7a47c32987b96e7f1c2 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_4676: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/index.html IGT_5711: 90611a0c90afa4a46496c78a4faf9638a1538ac3 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/index.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for Add support to detect HDCP events 2020-06-16 10:58 [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events Ankit Nautiyal ` (2 preceding siblings ...) 2020-06-16 16:45 ` [igt-dev] ✓ Fi.CI.BAT: success for Add support to detect HDCP events Patchwork @ 2020-06-16 17:44 ` Patchwork 3 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2020-06-16 17:44 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: igt-dev == Series Details == Series: Add support to detect HDCP events URL : https://patchwork.freedesktop.org/series/78413/ State : success == Summary == CI Bug Log - changes from CI_DRM_8634_full -> IGTPW_4676_full ==================================================== Summary ------- **WARNING** Minor unknown changes coming with IGTPW_4676_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_4676_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/index.html Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_4676_full: ### IGT changes ### #### Warnings #### * igt@kms_content_protection@uevent: - shard-kbl: [FAIL][1] ([i915#357]) -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl4/igt@kms_content_protection@uevent.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl7/igt@kms_content_protection@uevent.html - shard-apl: [FAIL][3] ([i915#357]) -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl6/igt@kms_content_protection@uevent.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl1/igt@kms_content_protection@uevent.html Known issues ------------ Here are the changes found in IGTPW_4676_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_isolation@preservation-s3@rcs0: - shard-kbl: [PASS][5] -> [DMESG-WARN][6] ([i915#180]) +3 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl2/igt@gem_ctx_isolation@preservation-s3@rcs0.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl7/igt@gem_ctx_isolation@preservation-s3@rcs0.html * igt@gem_exec_reloc@basic-concurrent0: - shard-glk: [PASS][7] -> [FAIL][8] ([i915#1930]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk2/igt@gem_exec_reloc@basic-concurrent0.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk9/igt@gem_exec_reloc@basic-concurrent0.html * igt@gem_exec_whisper@basic-fds-priority: - shard-glk: [PASS][9] -> [DMESG-WARN][10] ([i915#118] / [i915#95]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk8/igt@gem_exec_whisper@basic-fds-priority.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk5/igt@gem_exec_whisper@basic-fds-priority.html * igt@gem_mmap_gtt@cpuset-medium-copy-xy: - shard-apl: [PASS][11] -> [DMESG-WARN][12] ([i915#95]) +26 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl1/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl8/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html * igt@kms_big_fb@linear-64bpp-rotate-0: - shard-glk: [PASS][13] -> [DMESG-FAIL][14] ([i915#118] / [i915#95]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk1/igt@kms_big_fb@linear-64bpp-rotate-0.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-0.html * igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen: - shard-kbl: [PASS][15] -> [DMESG-FAIL][16] ([i915#54] / [i915#95]) +3 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl3/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: [PASS][17] -> [FAIL][18] ([i915#72]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk2/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html * igt@kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled: - shard-apl: [PASS][19] -> [DMESG-FAIL][20] ([i915#54] / [i915#95]) +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl4/igt@kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl8/igt@kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled.html * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite: - shard-kbl: [PASS][21] -> [DMESG-WARN][22] ([i915#1982]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl2/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move: - shard-tglb: [PASS][23] -> [DMESG-WARN][24] ([i915#1982]) +1 similar issue [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte: - shard-tglb: [PASS][25] -> [DMESG-WARN][26] ([i915#402]) +2 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html * igt@kms_hdmi_inject@inject-audio: - shard-tglb: [PASS][27] -> [SKIP][28] ([i915#433]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb1/igt@kms_hdmi_inject@inject-audio.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb6/igt@kms_hdmi_inject@inject-audio.html * igt@kms_pipe_crc_basic@read-crc-pipe-a: - shard-apl: [PASS][29] -> [DMESG-FAIL][30] ([i915#95]) +1 similar issue [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl7/igt@kms_pipe_crc_basic@read-crc-pipe-a.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl6/igt@kms_pipe_crc_basic@read-crc-pipe-a.html - shard-kbl: [PASS][31] -> [DMESG-FAIL][32] ([i915#95]) +1 similar issue [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl2/igt@kms_pipe_crc_basic@read-crc-pipe-a.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl1/igt@kms_pipe_crc_basic@read-crc-pipe-a.html * igt@kms_plane_multiple@atomic-pipe-a-tiling-none: - shard-hsw: [PASS][33] -> [TIMEOUT][34] ([i915#1958]) +1 similar issue [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw1/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw8/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb: [PASS][35] -> [SKIP][36] ([fdo#109441]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html * igt@kms_setmode@basic: - shard-kbl: [PASS][37] -> [FAIL][38] ([i915#31]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl3/igt@kms_setmode@basic.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl4/igt@kms_setmode@basic.html * igt@perf@rc6-disable: - shard-iclb: [PASS][39] -> [SKIP][40] ([i915#405]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-iclb2/igt@perf@rc6-disable.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-iclb6/igt@perf@rc6-disable.html - shard-hsw: [PASS][41] -> [SKIP][42] ([fdo#109271]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw6/igt@perf@rc6-disable.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw6/igt@perf@rc6-disable.html - shard-kbl: [PASS][43] -> [SKIP][44] ([fdo#109271]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl3/igt@perf@rc6-disable.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@perf@rc6-disable.html - shard-apl: [PASS][45] -> [SKIP][46] ([fdo#109271]) [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl8/igt@perf@rc6-disable.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl3/igt@perf@rc6-disable.html - shard-tglb: [PASS][47] -> [SKIP][48] ([fdo#111719] / [i915#405]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb2/igt@perf@rc6-disable.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb1/igt@perf@rc6-disable.html - shard-glk: [PASS][49] -> [SKIP][50] ([fdo#109271]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk7/igt@perf@rc6-disable.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk8/igt@perf@rc6-disable.html * igt@perf_pmu@semaphore-busy@rcs0: - shard-kbl: [PASS][51] -> [FAIL][52] ([i915#1820]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl7/igt@perf_pmu@semaphore-busy@rcs0.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl1/igt@perf_pmu@semaphore-busy@rcs0.html * igt@syncobj_wait@invalid-wait-zero-handles: - shard-kbl: [PASS][53] -> [DMESG-WARN][54] ([i915#93] / [i915#95]) +35 similar issues [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl7/igt@syncobj_wait@invalid-wait-zero-handles.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@syncobj_wait@invalid-wait-zero-handles.html #### Possible fixes #### * igt@gem_exec_schedule@implicit-write-read@rcs0: - shard-snb: [INCOMPLETE][55] ([i915#82]) -> [PASS][56] +2 similar issues [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-snb1/igt@gem_exec_schedule@implicit-write-read@rcs0.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-snb6/igt@gem_exec_schedule@implicit-write-read@rcs0.html * igt@gem_tiled_blits@basic: - shard-snb: [TIMEOUT][57] ([i915#1958]) -> [PASS][58] +1 similar issue [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-snb4/igt@gem_tiled_blits@basic.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-snb5/igt@gem_tiled_blits@basic.html * igt@gen7_exec_parse@chained-batch: - shard-hsw: [TIMEOUT][59] ([i915#1958]) -> [PASS][60] +2 similar issues [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw7/igt@gen7_exec_parse@chained-batch.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw7/igt@gen7_exec_parse@chained-batch.html * igt@i915_pm_rpm@system-suspend-modeset: - shard-hsw: [SKIP][61] ([fdo#109271]) -> [PASS][62] +1 similar issue [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw7/igt@i915_pm_rpm@system-suspend-modeset.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw6/igt@i915_pm_rpm@system-suspend-modeset.html * igt@i915_query@query-topology-kernel-writes: - shard-iclb: [DMESG-WARN][63] ([i915#1982]) -> [PASS][64] [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-iclb7/igt@i915_query@query-topology-kernel-writes.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-iclb5/igt@i915_query@query-topology-kernel-writes.html * igt@i915_suspend@fence-restore-untiled: - shard-kbl: [INCOMPLETE][65] ([i915#155]) -> [PASS][66] [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl1/igt@i915_suspend@fence-restore-untiled.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl6/igt@i915_suspend@fence-restore-untiled.html * igt@kms_big_fb@y-tiled-64bpp-rotate-0: - shard-glk: [DMESG-FAIL][67] ([i915#118] / [i915#95]) -> [PASS][68] [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk8/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk4/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html * igt@kms_cursor_crc@pipe-a-cursor-128x128-sliding: - shard-apl: [DMESG-WARN][69] ([i915#95]) -> [PASS][70] +45 similar issues [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl7/igt@kms_cursor_crc@pipe-a-cursor-128x128-sliding.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl6/igt@kms_cursor_crc@pipe-a-cursor-128x128-sliding.html * igt@kms_cursor_crc@pipe-a-cursor-64x21-random: - shard-kbl: [DMESG-FAIL][71] ([i915#54] / [i915#95]) -> [PASS][72] +3 similar issues [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-64x21-random.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-64x21-random.html * igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding: - shard-apl: [FAIL][73] ([i915#54]) -> [PASS][74] [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl7/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl2/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html - shard-kbl: [FAIL][75] ([i915#54]) -> [PASS][76] [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html - shard-glk: [FAIL][77] ([i915#54]) -> [PASS][78] [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk7/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk6/igt@kms_cursor_crc@pipe-a-cursor-64x21-sliding.html * igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled: - shard-kbl: [DMESG-WARN][79] ([i915#93] / [i915#95]) -> [PASS][80] +55 similar issues [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl3/igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled.html [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl7/igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled.html * igt@kms_draw_crc@fill-fb: - shard-apl: [DMESG-FAIL][81] ([i915#95]) -> [PASS][82] +1 similar issue [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl1/igt@kms_draw_crc@fill-fb.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl2/igt@kms_draw_crc@fill-fb.html * igt@kms_fbcon_fbt@fbc-suspend: - shard-apl: [FAIL][83] ([i915#1525]) -> [PASS][84] +1 similar issue [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl2/igt@kms_fbcon_fbt@fbc-suspend.html [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl7/igt@kms_fbcon_fbt@fbc-suspend.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt: - shard-tglb: [DMESG-WARN][85] ([i915#1982]) -> [PASS][86] [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt.html [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render: - shard-tglb: [DMESG-WARN][87] ([i915#1982] / [i915#402]) -> [PASS][88] [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render.html [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render.html * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - shard-kbl: [DMESG-FAIL][89] ([i915#95]) -> [PASS][90] +3 similar issues [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl4/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes: - shard-kbl: [DMESG-WARN][91] ([i915#180]) -> [PASS][92] +1 similar issue [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html * igt@kms_psr@psr2_dpms: - shard-iclb: [SKIP][93] ([fdo#109441]) -> [PASS][94] [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-iclb5/igt@kms_psr@psr2_dpms.html [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-iclb2/igt@kms_psr@psr2_dpms.html * igt@kms_vblank@pipe-b-wait-busy-hang: - shard-apl: [DMESG-WARN][95] ([i915#1982]) -> [PASS][96] [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl3/igt@kms_vblank@pipe-b-wait-busy-hang.html [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl7/igt@kms_vblank@pipe-b-wait-busy-hang.html * igt@perf@invalid-open-flags: - shard-tglb: [SKIP][97] ([i915#405]) -> [PASS][98] [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-tglb6/igt@perf@invalid-open-flags.html [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-tglb2/igt@perf@invalid-open-flags.html - shard-apl: [SKIP][99] ([fdo#109271]) -> [PASS][100] [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl4/igt@perf@invalid-open-flags.html [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl4/igt@perf@invalid-open-flags.html - shard-iclb: [SKIP][101] ([i915#405]) -> [PASS][102] [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-iclb7/igt@perf@invalid-open-flags.html [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-iclb6/igt@perf@invalid-open-flags.html - shard-glk: [SKIP][103] ([fdo#109271]) -> [PASS][104] [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-glk8/igt@perf@invalid-open-flags.html [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-glk9/igt@perf@invalid-open-flags.html - shard-kbl: [SKIP][105] ([fdo#109271]) -> [PASS][106] [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl2/igt@perf@invalid-open-flags.html [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@perf@invalid-open-flags.html #### Warnings #### * igt@gem_exec_reloc@basic-concurrent16: - shard-snb: [TIMEOUT][107] ([i915#1958]) -> [FAIL][108] ([i915#1930]) [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-snb4/igt@gem_exec_reloc@basic-concurrent16.html [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-snb6/igt@gem_exec_reloc@basic-concurrent16.html * igt@gen7_exec_parse@chained-batch: - shard-snb: [TIMEOUT][109] ([i915#1958]) -> [SKIP][110] ([fdo#109271]) +2 similar issues [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-snb4/igt@gen7_exec_parse@chained-batch.html [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-snb2/igt@gen7_exec_parse@chained-batch.html * igt@i915_pm_dc@dc6-psr: - shard-hsw: [TIMEOUT][111] ([i915#1958]) -> [SKIP][112] ([fdo#109271]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw7/igt@i915_pm_dc@dc6-psr.html [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw4/igt@i915_pm_dc@dc6-psr.html * igt@kms_color_chamelium@pipe-b-ctm-max: - shard-snb: [TIMEOUT][113] ([i915#1958]) -> [SKIP][114] ([fdo#109271] / [fdo#111827]) [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-snb4/igt@kms_color_chamelium@pipe-b-ctm-max.html [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-snb2/igt@kms_color_chamelium@pipe-b-ctm-max.html - shard-hsw: [TIMEOUT][115] ([i915#1958]) -> [SKIP][116] ([fdo#109271] / [fdo#111827]) [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw7/igt@kms_color_chamelium@pipe-b-ctm-max.html [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw1/igt@kms_color_chamelium@pipe-b-ctm-max.html * igt@kms_content_protection@lic: - shard-kbl: [TIMEOUT][117] ([i915#1319]) -> [TIMEOUT][118] ([i915#1319] / [i915#1958]) [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl1/igt@kms_content_protection@lic.html [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@kms_content_protection@lic.html * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-kbl: [DMESG-WARN][119] ([i915#93] / [i915#95]) -> [INCOMPLETE][120] ([i915#155]) [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl3/igt@kms_frontbuffer_tracking@fbc-suspend.html [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@kms_frontbuffer_tracking@fbc-suspend.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max: - shard-apl: [FAIL][121] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][122] ([fdo#108145] / [i915#95]) [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl7/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html * igt@kms_plane_alpha_blend@pipe-b-alpha-basic: - shard-kbl: [FAIL][123] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][124] ([fdo#108145] / [i915#95]) +1 similar issue [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-kbl1/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-kbl2/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html * igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb: - shard-apl: [DMESG-FAIL][125] ([i915#95]) -> [FAIL][126] ([i915#265]) [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-apl3/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-apl6/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html * igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format: - shard-hsw: [SKIP][127] ([fdo#109271]) -> [TIMEOUT][128] ([i915#1958]) +1 similar issue [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8634/shard-hsw6/igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format.html [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/shard-hsw8/igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#111719]: https://bugs.freedesktop.org/show_bug.cgi?id=111719 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118 [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319 [i915#1525]: https://gitlab.freedesktop.org/drm/intel/issues/1525 [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#1820]: https://gitlab.freedesktop.org/drm/intel/issues/1820 [i915#1930]: https://gitlab.freedesktop.org/drm/intel/issues/1930 [i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958 [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#2036]: https://gitlab.freedesktop.org/drm/intel/issues/2036 [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265 [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31 [i915#357]: https://gitlab.freedesktop.org/drm/intel/issues/357 [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402 [i915#405]: https://gitlab.freedesktop.org/drm/intel/issues/405 [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433 [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54 [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72 [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82 [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (11 -> 8) ------------------------------ Missing (3): pig-skl-6260u pig-glk-j5005 pig-icl-1065g7 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_5711 -> IGTPW_4676 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_8634: 72c556b3627adef8cef3b7a47c32987b96e7f1c2 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_4676: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4676/index.html IGT_5711: 90611a0c90afa4a46496c78a4faf9638a1538ac3 @ 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_4676/index.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2020-06-17 6:24 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-06-16 10:58 [igt-dev] [Patch][i-g-t 0/2] Add support to detect HDCP events Ankit Nautiyal 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 1/2] lib/igt_kms: Add support for detecting connector events Ankit Nautiyal 2020-06-16 14:12 ` Ramalingam C 2020-06-17 6:23 ` Nautiyal, Ankit K 2020-06-16 10:58 ` [igt-dev] [Patch][i-g-t 2/2] tests/kms_content_protection: Use library functions for handling uevents Ankit Nautiyal 2020-06-16 14:03 ` Ramalingam C 2020-06-16 14:10 ` Arkadiusz Hiler 2020-06-16 14:17 ` Ramalingam C 2020-06-17 4:18 ` Anshuman Gupta 2020-06-17 6:24 ` Nautiyal, Ankit K 2020-06-16 16:45 ` [igt-dev] ✓ Fi.CI.BAT: success for Add support to detect HDCP events Patchwork 2020-06-16 17:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox