* [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest
@ 2019-05-07 8:51 Oleg Vasilev
2019-05-07 9:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Oleg Vasilev @ 2019-05-07 8:51 UTC (permalink / raw)
To: igt-dev
Test checked that the number of valid edids from drm is equal to the
same number from i2c.
Now for each edid the whole blob is compared. In case of mismatch the
whole edid is printed.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104097
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
---
tests/i915/i915_pm_rpm.c | 176 ++++++++++++++++++++++++---------------
1 file changed, 108 insertions(+), 68 deletions(-)
diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index a2c9d0ed..f1530391 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -571,33 +571,56 @@ static void assert_drm_infos_equal(struct compare_data *d1,
assert_drm_crtcs_equal(d1->crtcs[i], d2->crtcs[i]);
}
-/* We could check the checksum too, but just the header is probably enough. */
-static bool edid_is_valid(const unsigned char *edid)
+static bool find_i2c_path(char *connector_name, char *i2c_path)
{
- char edid_header[] = {
- 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0,
- };
+ struct dirent *dirent;
+ DIR *dir;
+ int sysfs_card_fd = igt_sysfs_open(drm_fd);
+ int connector_fd = -1;
+ bool found_i2c_file = false;
- return (memcmp(edid, edid_header, sizeof(edid_header)) == 0);
-}
+ dir = fdopendir(sysfs_card_fd);
+ igt_assert(dir);
-static int count_drm_valid_edids(struct mode_set_data *data)
-{
- int ret = 0;
+ while ((dirent = readdir(dir))) {
+ /* Skip "cardx-" prefix */
+ char *dirname = dirent->d_name;
+ while(dirname[0] != '\0' && dirname[0] != '-')
+ ++dirname;
- if (!data->res)
- return 0;
+ if(*dirname == '-')
+ ++dirname;
- for (int i = 0; i < data->res->count_connectors; i++)
- if (data->edids[i] && edid_is_valid(data->edids[i]->data))
- ret++;
- return ret;
+ if (strcmp(dirname, connector_name) == 0) {
+ connector_fd = openat(sysfs_card_fd, dirent->d_name, O_RDONLY);
+ break;
+ }
+ }
+ closedir(dir);
+
+ if(connector_fd < 0)
+ return false;
+
+ dir = fdopendir(connector_fd);
+ igt_assert(dir);
+
+ while ((dirent = readdir(dir))) {
+ if (strncmp(dirent->d_name, "i2c-", 4) == 0) {
+ sprintf(i2c_path, "/dev/%s", dirent->d_name);
+ found_i2c_file = true;
+ }
+ }
+ closedir(dir);
+ return found_i2c_file;
}
-static bool i2c_edid_is_valid(int fd)
+
+static bool i2c_read_edid(char *connector_name, unsigned char *edid)
{
- int rc;
- unsigned char edid[128] = {};
+ char i2c_path[PATH_MAX];
+ bool result = find_i2c_path(connector_name, i2c_path);
+ int rc, fd;
+
struct i2c_msg msgs[] = {
{ /* Start at 0. */
.addr = 0x50,
@@ -616,69 +639,86 @@ static bool i2c_edid_is_valid(int fd)
.nmsgs = 2,
};
+
+ if (!result)
+ return false;
+
+ fd = open(i2c_path, O_RDWR);
+ igt_assert_neq(fd, -1);
+
rc = ioctl(fd, I2C_RDWR, &msgset);
- return (rc >= 0) ? edid_is_valid(edid) : false;
+
+ close(fd);
+ return rc >= 0;
}
-static int count_i2c_valid_edids(void)
+static void format_hex_string(unsigned char edid[static EDID_LENGTH],
+ char buf[static EDID_LENGTH * 5 + 1])
{
- int fd, ret = 0;
- DIR *dir;
+ for (size_t i = 0; i < EDID_LENGTH; ++i)
+ sprintf(buf+i*5, "0x%02x ", edid[i]);
+}
- struct dirent *dirent;
- char full_name[PATH_MAX];
+static void test_i2c(struct mode_set_data *data)
+{
+ bool failed = false;
+ igt_display_t display;
+ igt_display_require(&display, drm_fd);
- dir = opendir("/dev/");
- igt_assert(dir);
+ for (int i = 0; i < data->res->count_connectors; i++) {
+ unsigned char *drm_edid = data->edids[i] ? data->edids[i]->data : NULL;
+ unsigned char i2c_edid[EDID_LENGTH] = {};
- while ((dirent = readdir(dir))) {
- if (strncmp(dirent->d_name, "i2c-", 4) == 0) {
- sprintf(full_name, "/dev/%s", dirent->d_name);
- fd = open(full_name, O_RDWR);
- igt_assert_neq(fd, -1);
- if (i2c_edid_is_valid(fd))
- ret++;
- close(fd);
- }
- }
+ igt_output_t *output = igt_output_from_connector(&display,
+ data->connectors[i]);
+ char *connector_name = (char *) igt_output_name(output);
- closedir(dir);
+ bool got_i2c_edid = i2c_read_edid(connector_name, i2c_edid);
+ bool got_drm_edid = drm_edid != NULL;
+ bool is_vga = data->connectors[i]->connector_type == DRM_MODE_CONNECTOR_VGA;
- return ret;
-}
+ bool edids_equal;
-static int count_vga_outputs(struct mode_set_data *data)
-{
- int count = 0;
+ /* We fail to detect some VGA monitors using our i2c method. If you look
+ * at the dmesg of these cases, you'll see the Kernel complaining about
+ * the EDID reading mostly FFs and then disabling bit-banging. Since we
+ * don't want to reimplement everything the Kernel does, let's just
+ * accept the fact that some VGA outputs won't be properly detected. */
+ if(is_vga)
+ continue;
- if (!data->res)
- return 0;
+ if(!got_i2c_edid && !got_drm_edid)
+ continue;
+
+ if(got_i2c_edid && got_drm_edid)
+ edids_equal = (0 == memcmp(drm_edid, i2c_edid, EDID_LENGTH));
+ else
+ edids_equal = false;
- for (int i = 0; i < data->res->count_connectors; i++)
- if (data->connectors[i]->connector_type ==
- DRM_MODE_CONNECTOR_VGA)
- count++;
- return count;
-}
+ if (!edids_equal) {
+ char buf[5 * EDID_LENGTH + 1];
+ igt_critical("For connector %s EDID mismatch!\n",
+ connector_name);
-static void test_i2c(struct mode_set_data *data)
-{
- int i2c_edids = count_i2c_valid_edids();
- int drm_edids = count_drm_valid_edids(data);
- int vga_outputs = count_vga_outputs(data);
- int diff;
-
- igt_debug("i2c edids:%d drm edids:%d vga outputs:%d\n",
- i2c_edids, drm_edids, vga_outputs);
-
- /* We fail to detect some VGA monitors using our i2c method. If you look
- * at the dmesg of these cases, you'll see the Kernel complaining about
- * the EDID reading mostly FFs and then disabling bit-banging. Since we
- * don't want to reimplement everything the Kernel does, let's just
- * accept the fact that some VGA outputs won't be properly detected. */
- diff = drm_edids - i2c_edids;
- igt_assert(diff <= vga_outputs && diff >= 0);
+ if(got_i2c_edid)
+ format_hex_string(i2c_edid, buf);
+ else
+ sprintf(buf, "NULL");
+
+ igt_critical("i2c: %s\n", buf);
+
+ if(got_drm_edid)
+ format_hex_string(drm_edid, buf);
+ else
+ sprintf(buf, "NULL");
+
+ igt_critical("drm: %s\n", buf);
+
+ failed = true;
+ }
+ }
+ igt_fail_on_f(failed, "Mismatch on EDID we got from i2c and DRM!\n");
}
static void setup_pc8(void)
--
2.21.0
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 9+ messages in thread* [igt-dev] ✓ Fi.CI.BAT: success for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev @ 2019-05-07 9:57 ` Patchwork 2019-05-07 11:58 ` [igt-dev] [PATCH] " Imre Deak ` (4 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2019-05-07 9:57 UTC (permalink / raw) To: Oleg Vasilev; +Cc: igt-dev == Series Details == Series: tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest URL : https://patchwork.freedesktop.org/series/60357/ State : success == Summary == CI Bug Log - changes from CI_DRM_6053 -> IGTPW_2947 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/60357/revisions/1/mbox/ Known issues ------------ Here are the changes found in IGTPW_2947 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_module_load@reload: - fi-blb-e6850: [PASS][1] -> [INCOMPLETE][2] ([fdo#107718]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-blb-e6850/igt@i915_module_load@reload.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-blb-e6850/igt@i915_module_load@reload.html * igt@i915_selftest@live_contexts: - fi-skl-gvtdvm: [PASS][3] -> [DMESG-FAIL][4] ([fdo#110235]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-skl-gvtdvm/igt@i915_selftest@live_contexts.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-skl-gvtdvm/igt@i915_selftest@live_contexts.html * igt@i915_selftest@live_hangcheck: - fi-skl-iommu: [PASS][5] -> [INCOMPLETE][6] ([fdo#108602] / [fdo#108744]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html - fi-apl-guc: [PASS][7] -> [DMESG-FAIL][8] ([fdo#110620]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-apl-guc/igt@i915_selftest@live_hangcheck.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-apl-guc/igt@i915_selftest@live_hangcheck.html #### Possible fixes #### * igt@i915_pm_rpm@module-reload: - fi-skl-6770hq: [FAIL][9] ([fdo#108511]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html * igt@i915_selftest@live_contexts: - fi-bdw-gvtdvm: [DMESG-FAIL][11] ([fdo#110235]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html * igt@i915_selftest@live_execlists: - fi-apl-guc: [INCOMPLETE][13] ([fdo#103927] / [fdo#109720]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-apl-guc/igt@i915_selftest@live_execlists.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-apl-guc/igt@i915_selftest@live_execlists.html #### Warnings #### * igt@runner@aborted: - fi-apl-guc: [FAIL][15] ([fdo#108622] / [fdo#109720]) -> [FAIL][16] ([fdo#110622]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/fi-apl-guc/igt@runner@aborted.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/fi-apl-guc/igt@runner@aborted.html [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511 [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602 [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622 [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744 [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720 [fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 [fdo#110620]: https://bugs.freedesktop.org/show_bug.cgi?id=110620 [fdo#110622]: https://bugs.freedesktop.org/show_bug.cgi?id=110622 Participating hosts (54 -> 44) ------------------------------ Missing (10): fi-kbl-soraka fi-cml-u2 fi-ilk-m540 fi-bsw-n3050 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus Build changes ------------- * IGT: IGT_4972 -> IGTPW_2947 CI_DRM_6053: 018780091ca311715c4b0595355ac21684cf552e @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2947: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/ IGT_4972: f052e49a43cc9704ea5f240df15dd9d3dfed68ab @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev 2019-05-07 9:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork @ 2019-05-07 11:58 ` Imre Deak 2019-05-07 12:25 ` Ville Syrjälä 2019-05-07 12:52 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork ` (3 subsequent siblings) 5 siblings, 1 reply; 9+ messages in thread From: Imre Deak @ 2019-05-07 11:58 UTC (permalink / raw) To: Oleg Vasilev, Jani Nikula, Ville Syrjälä; +Cc: igt-dev On Tue, May 07, 2019 at 11:51:54AM +0300, Oleg Vasilev wrote: > Test checked that the number of valid edids from drm is equal to the > same number from i2c. > > Now for each edid the whole blob is compared. In case of mismatch the > whole edid is printed. Hm, if I'm parsing the code correctly we have a symlink to the connector's I2C device only for DP and SDVO connectors, but not for HDMI or VGA. Jani, Ville do you know what's the reason for that? I think having a symlink would be useful. Is there another way to identify which I2C device a connector uses? > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104097 > Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> > Cc: Imre Deak <imre.deak@intel.com> > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com> > --- > tests/i915/i915_pm_rpm.c | 176 ++++++++++++++++++++++++--------------- > 1 file changed, 108 insertions(+), 68 deletions(-) > > diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c > index a2c9d0ed..f1530391 100644 > --- a/tests/i915/i915_pm_rpm.c > +++ b/tests/i915/i915_pm_rpm.c > @@ -571,33 +571,56 @@ static void assert_drm_infos_equal(struct compare_data *d1, > assert_drm_crtcs_equal(d1->crtcs[i], d2->crtcs[i]); > } > > -/* We could check the checksum too, but just the header is probably enough. */ > -static bool edid_is_valid(const unsigned char *edid) > +static bool find_i2c_path(char *connector_name, char *i2c_path) > { > - char edid_header[] = { > - 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, > - }; > + struct dirent *dirent; > + DIR *dir; > + int sysfs_card_fd = igt_sysfs_open(drm_fd); > + int connector_fd = -1; > + bool found_i2c_file = false; > > - return (memcmp(edid, edid_header, sizeof(edid_header)) == 0); > -} > + dir = fdopendir(sysfs_card_fd); > + igt_assert(dir); > > -static int count_drm_valid_edids(struct mode_set_data *data) > -{ > - int ret = 0; > + while ((dirent = readdir(dir))) { > + /* Skip "cardx-" prefix */ > + char *dirname = dirent->d_name; > + while(dirname[0] != '\0' && dirname[0] != '-') > + ++dirname; > > - if (!data->res) > - return 0; > + if(*dirname == '-') > + ++dirname; > > - for (int i = 0; i < data->res->count_connectors; i++) > - if (data->edids[i] && edid_is_valid(data->edids[i]->data)) > - ret++; > - return ret; > + if (strcmp(dirname, connector_name) == 0) { > + connector_fd = openat(sysfs_card_fd, dirent->d_name, O_RDONLY); > + break; > + } > + } > + closedir(dir); > + > + if(connector_fd < 0) > + return false; > + > + dir = fdopendir(connector_fd); > + igt_assert(dir); > + > + while ((dirent = readdir(dir))) { > + if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > + sprintf(i2c_path, "/dev/%s", dirent->d_name); > + found_i2c_file = true; > + } > + } > + closedir(dir); > + return found_i2c_file; > } > > -static bool i2c_edid_is_valid(int fd) > + > +static bool i2c_read_edid(char *connector_name, unsigned char *edid) > { > - int rc; > - unsigned char edid[128] = {}; > + char i2c_path[PATH_MAX]; > + bool result = find_i2c_path(connector_name, i2c_path); > + int rc, fd; > + > struct i2c_msg msgs[] = { > { /* Start at 0. */ > .addr = 0x50, > @@ -616,69 +639,86 @@ static bool i2c_edid_is_valid(int fd) > .nmsgs = 2, > }; > > + > + if (!result) > + return false; > + > + fd = open(i2c_path, O_RDWR); > + igt_assert_neq(fd, -1); > + > rc = ioctl(fd, I2C_RDWR, &msgset); > - return (rc >= 0) ? edid_is_valid(edid) : false; > + > + close(fd); > + return rc >= 0; > } > > -static int count_i2c_valid_edids(void) > +static void format_hex_string(unsigned char edid[static EDID_LENGTH], > + char buf[static EDID_LENGTH * 5 + 1]) > { > - int fd, ret = 0; > - DIR *dir; > + for (size_t i = 0; i < EDID_LENGTH; ++i) > + sprintf(buf+i*5, "0x%02x ", edid[i]); > +} > > - struct dirent *dirent; > - char full_name[PATH_MAX]; > +static void test_i2c(struct mode_set_data *data) > +{ > + bool failed = false; > + igt_display_t display; > + igt_display_require(&display, drm_fd); > > - dir = opendir("/dev/"); > - igt_assert(dir); > + for (int i = 0; i < data->res->count_connectors; i++) { > + unsigned char *drm_edid = data->edids[i] ? data->edids[i]->data : NULL; > + unsigned char i2c_edid[EDID_LENGTH] = {}; > > - while ((dirent = readdir(dir))) { > - if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > - sprintf(full_name, "/dev/%s", dirent->d_name); > - fd = open(full_name, O_RDWR); > - igt_assert_neq(fd, -1); > - if (i2c_edid_is_valid(fd)) > - ret++; > - close(fd); > - } > - } > + igt_output_t *output = igt_output_from_connector(&display, > + data->connectors[i]); > + char *connector_name = (char *) igt_output_name(output); > > - closedir(dir); > + bool got_i2c_edid = i2c_read_edid(connector_name, i2c_edid); > + bool got_drm_edid = drm_edid != NULL; > + bool is_vga = data->connectors[i]->connector_type == DRM_MODE_CONNECTOR_VGA; > > - return ret; > -} > + bool edids_equal; > > -static int count_vga_outputs(struct mode_set_data *data) > -{ > - int count = 0; > + /* We fail to detect some VGA monitors using our i2c method. If you look > + * at the dmesg of these cases, you'll see the Kernel complaining about > + * the EDID reading mostly FFs and then disabling bit-banging. Since we > + * don't want to reimplement everything the Kernel does, let's just > + * accept the fact that some VGA outputs won't be properly detected. */ > + if(is_vga) > + continue; > > - if (!data->res) > - return 0; > + if(!got_i2c_edid && !got_drm_edid) > + continue; > + > + if(got_i2c_edid && got_drm_edid) > + edids_equal = (0 == memcmp(drm_edid, i2c_edid, EDID_LENGTH)); > + else > + edids_equal = false; > > - for (int i = 0; i < data->res->count_connectors; i++) > - if (data->connectors[i]->connector_type == > - DRM_MODE_CONNECTOR_VGA) > - count++; > > - return count; > -} > + if (!edids_equal) { > + char buf[5 * EDID_LENGTH + 1]; > + igt_critical("For connector %s EDID mismatch!\n", > + connector_name); > > -static void test_i2c(struct mode_set_data *data) > -{ > - int i2c_edids = count_i2c_valid_edids(); > - int drm_edids = count_drm_valid_edids(data); > - int vga_outputs = count_vga_outputs(data); > - int diff; > - > - igt_debug("i2c edids:%d drm edids:%d vga outputs:%d\n", > - i2c_edids, drm_edids, vga_outputs); > - > - /* We fail to detect some VGA monitors using our i2c method. If you look > - * at the dmesg of these cases, you'll see the Kernel complaining about > - * the EDID reading mostly FFs and then disabling bit-banging. Since we > - * don't want to reimplement everything the Kernel does, let's just > - * accept the fact that some VGA outputs won't be properly detected. */ > - diff = drm_edids - i2c_edids; > - igt_assert(diff <= vga_outputs && diff >= 0); > + if(got_i2c_edid) > + format_hex_string(i2c_edid, buf); > + else > + sprintf(buf, "NULL"); > + > + igt_critical("i2c: %s\n", buf); > + > + if(got_drm_edid) > + format_hex_string(drm_edid, buf); > + else > + sprintf(buf, "NULL"); > + > + igt_critical("drm: %s\n", buf); > + > + failed = true; > + } > + } > + igt_fail_on_f(failed, "Mismatch on EDID we got from i2c and DRM!\n"); > } > > static void setup_pc8(void) > -- > 2.21.0 > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 11:58 ` [igt-dev] [PATCH] " Imre Deak @ 2019-05-07 12:25 ` Ville Syrjälä 2019-05-07 13:28 ` Imre Deak 0 siblings, 1 reply; 9+ messages in thread From: Ville Syrjälä @ 2019-05-07 12:25 UTC (permalink / raw) To: Imre Deak; +Cc: Jani Nikula, igt-dev On Tue, May 07, 2019 at 02:58:10PM +0300, Imre Deak wrote: > On Tue, May 07, 2019 at 11:51:54AM +0300, Oleg Vasilev wrote: > > Test checked that the number of valid edids from drm is equal to the > > same number from i2c. > > > > Now for each edid the whole blob is compared. In case of mismatch the > > whole edid is printed. > > Hm, if I'm parsing the code correctly we have a symlink to the > connector's I2C device only for DP and SDVO connectors, but not for > HDMI or VGA. For DP the aux/i2c is a child of the connector. For everything else I think it's a child of the pci device. SDVO looks like the non-DP case to me, ie. i2c dev is a child of the pci dev. Which probably makes sense in case the SDVO encoder has multiple connectors. > > Jani, Ville do you know what's the reason for that? I think having a > symlink would be useful. Yes, symlink would be nice. > > Is there another way to identify which I2C device a connector uses? > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104097 > > Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> > > Cc: Imre Deak <imre.deak@intel.com> > > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com> > > --- > > tests/i915/i915_pm_rpm.c | 176 ++++++++++++++++++++++++--------------- > > 1 file changed, 108 insertions(+), 68 deletions(-) > > > > diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c > > index a2c9d0ed..f1530391 100644 > > --- a/tests/i915/i915_pm_rpm.c > > +++ b/tests/i915/i915_pm_rpm.c > > @@ -571,33 +571,56 @@ static void assert_drm_infos_equal(struct compare_data *d1, > > assert_drm_crtcs_equal(d1->crtcs[i], d2->crtcs[i]); > > } > > > > -/* We could check the checksum too, but just the header is probably enough. */ > > -static bool edid_is_valid(const unsigned char *edid) > > +static bool find_i2c_path(char *connector_name, char *i2c_path) > > { > > - char edid_header[] = { > > - 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, > > - }; > > + struct dirent *dirent; > > + DIR *dir; > > + int sysfs_card_fd = igt_sysfs_open(drm_fd); > > + int connector_fd = -1; > > + bool found_i2c_file = false; > > > > - return (memcmp(edid, edid_header, sizeof(edid_header)) == 0); > > -} > > + dir = fdopendir(sysfs_card_fd); > > + igt_assert(dir); > > > > -static int count_drm_valid_edids(struct mode_set_data *data) > > -{ > > - int ret = 0; > > + while ((dirent = readdir(dir))) { > > + /* Skip "cardx-" prefix */ > > + char *dirname = dirent->d_name; > > + while(dirname[0] != '\0' && dirname[0] != '-') > > + ++dirname; > > > > - if (!data->res) > > - return 0; > > + if(*dirname == '-') > > + ++dirname; > > > > - for (int i = 0; i < data->res->count_connectors; i++) > > - if (data->edids[i] && edid_is_valid(data->edids[i]->data)) > > - ret++; > > - return ret; > > + if (strcmp(dirname, connector_name) == 0) { > > + connector_fd = openat(sysfs_card_fd, dirent->d_name, O_RDONLY); > > + break; > > + } > > + } > > + closedir(dir); > > + > > + if(connector_fd < 0) > > + return false; > > + > > + dir = fdopendir(connector_fd); > > + igt_assert(dir); > > + > > + while ((dirent = readdir(dir))) { > > + if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > > + sprintf(i2c_path, "/dev/%s", dirent->d_name); > > + found_i2c_file = true; > > + } > > + } > > + closedir(dir); > > + return found_i2c_file; > > } > > > > -static bool i2c_edid_is_valid(int fd) > > + > > +static bool i2c_read_edid(char *connector_name, unsigned char *edid) > > { > > - int rc; > > - unsigned char edid[128] = {}; > > + char i2c_path[PATH_MAX]; > > + bool result = find_i2c_path(connector_name, i2c_path); > > + int rc, fd; > > + > > struct i2c_msg msgs[] = { > > { /* Start at 0. */ > > .addr = 0x50, > > @@ -616,69 +639,86 @@ static bool i2c_edid_is_valid(int fd) > > .nmsgs = 2, > > }; > > > > + > > + if (!result) > > + return false; > > + > > + fd = open(i2c_path, O_RDWR); > > + igt_assert_neq(fd, -1); > > + > > rc = ioctl(fd, I2C_RDWR, &msgset); > > - return (rc >= 0) ? edid_is_valid(edid) : false; > > + > > + close(fd); > > + return rc >= 0; > > } > > > > -static int count_i2c_valid_edids(void) > > +static void format_hex_string(unsigned char edid[static EDID_LENGTH], > > + char buf[static EDID_LENGTH * 5 + 1]) > > { > > - int fd, ret = 0; > > - DIR *dir; > > + for (size_t i = 0; i < EDID_LENGTH; ++i) > > + sprintf(buf+i*5, "0x%02x ", edid[i]); > > +} > > > > - struct dirent *dirent; > > - char full_name[PATH_MAX]; > > +static void test_i2c(struct mode_set_data *data) > > +{ > > + bool failed = false; > > + igt_display_t display; > > + igt_display_require(&display, drm_fd); > > > > - dir = opendir("/dev/"); > > - igt_assert(dir); > > + for (int i = 0; i < data->res->count_connectors; i++) { > > + unsigned char *drm_edid = data->edids[i] ? data->edids[i]->data : NULL; > > + unsigned char i2c_edid[EDID_LENGTH] = {}; > > > > - while ((dirent = readdir(dir))) { > > - if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > > - sprintf(full_name, "/dev/%s", dirent->d_name); > > - fd = open(full_name, O_RDWR); > > - igt_assert_neq(fd, -1); > > - if (i2c_edid_is_valid(fd)) > > - ret++; > > - close(fd); > > - } > > - } > > + igt_output_t *output = igt_output_from_connector(&display, > > + data->connectors[i]); > > + char *connector_name = (char *) igt_output_name(output); > > > > - closedir(dir); > > + bool got_i2c_edid = i2c_read_edid(connector_name, i2c_edid); > > + bool got_drm_edid = drm_edid != NULL; > > + bool is_vga = data->connectors[i]->connector_type == DRM_MODE_CONNECTOR_VGA; > > > > - return ret; > > -} > > + bool edids_equal; > > > > -static int count_vga_outputs(struct mode_set_data *data) > > -{ > > - int count = 0; > > + /* We fail to detect some VGA monitors using our i2c method. If you look > > + * at the dmesg of these cases, you'll see the Kernel complaining about > > + * the EDID reading mostly FFs and then disabling bit-banging. Since we > > + * don't want to reimplement everything the Kernel does, let's just > > + * accept the fact that some VGA outputs won't be properly detected. */ > > + if(is_vga) > > + continue; > > > > - if (!data->res) > > - return 0; > > + if(!got_i2c_edid && !got_drm_edid) > > + continue; > > + > > + if(got_i2c_edid && got_drm_edid) > > + edids_equal = (0 == memcmp(drm_edid, i2c_edid, EDID_LENGTH)); > > + else > > + edids_equal = false; > > > > - for (int i = 0; i < data->res->count_connectors; i++) > > - if (data->connectors[i]->connector_type == > > - DRM_MODE_CONNECTOR_VGA) > > - count++; > > > > - return count; > > -} > > + if (!edids_equal) { > > + char buf[5 * EDID_LENGTH + 1]; > > + igt_critical("For connector %s EDID mismatch!\n", > > + connector_name); > > > > -static void test_i2c(struct mode_set_data *data) > > -{ > > - int i2c_edids = count_i2c_valid_edids(); > > - int drm_edids = count_drm_valid_edids(data); > > - int vga_outputs = count_vga_outputs(data); > > - int diff; > > - > > - igt_debug("i2c edids:%d drm edids:%d vga outputs:%d\n", > > - i2c_edids, drm_edids, vga_outputs); > > - > > - /* We fail to detect some VGA monitors using our i2c method. If you look > > - * at the dmesg of these cases, you'll see the Kernel complaining about > > - * the EDID reading mostly FFs and then disabling bit-banging. Since we > > - * don't want to reimplement everything the Kernel does, let's just > > - * accept the fact that some VGA outputs won't be properly detected. */ > > - diff = drm_edids - i2c_edids; > > - igt_assert(diff <= vga_outputs && diff >= 0); > > + if(got_i2c_edid) > > + format_hex_string(i2c_edid, buf); > > + else > > + sprintf(buf, "NULL"); > > + > > + igt_critical("i2c: %s\n", buf); > > + > > + if(got_drm_edid) > > + format_hex_string(drm_edid, buf); > > + else > > + sprintf(buf, "NULL"); > > + > > + igt_critical("drm: %s\n", buf); > > + > > + failed = true; > > + } > > + } > > + igt_fail_on_f(failed, "Mismatch on EDID we got from i2c and DRM!\n"); > > } > > > > static void setup_pc8(void) > > -- > > 2.21.0 > > -- Ville Syrjälä Intel _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 12:25 ` Ville Syrjälä @ 2019-05-07 13:28 ` Imre Deak 0 siblings, 0 replies; 9+ messages in thread From: Imre Deak @ 2019-05-07 13:28 UTC (permalink / raw) To: Ville Syrjälä, Oleg Vasilev; +Cc: Jani Nikula, igt-dev On Tue, May 07, 2019 at 03:25:21PM +0300, Ville Syrjälä wrote: > On Tue, May 07, 2019 at 02:58:10PM +0300, Imre Deak wrote: > > On Tue, May 07, 2019 at 11:51:54AM +0300, Oleg Vasilev wrote: > > > Test checked that the number of valid edids from drm is equal to the > > > same number from i2c. > > > > > > Now for each edid the whole blob is compared. In case of mismatch the > > > whole edid is printed. > > > > Hm, if I'm parsing the code correctly we have a symlink to the > > connector's I2C device only for DP and SDVO connectors, but not for > > HDMI or VGA. > > For DP the aux/i2c is a child of the connector. For everything else I > think it's a child of the pci device. SDVO looks like the non-DP case > to me, ie. i2c dev is a child of the pci dev. Which probably makes > sense in case the SDVO encoder has multiple connectors. > > > > > Jani, Ville do you know what's the reason for that? I think having a > > symlink would be useful. > > Yes, symlink would be nice. Ok, so Oleg, I think first you'd need to add the I2C symlinks to all connectors in the driver. I don't think there is any other good way to determine the mapping. > > > > > Is there another way to identify which I2C device a connector uses? > > > > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104097 > > > Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> > > > Cc: Imre Deak <imre.deak@intel.com> > > > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com> > > > --- > > > tests/i915/i915_pm_rpm.c | 176 ++++++++++++++++++++++++--------------- > > > 1 file changed, 108 insertions(+), 68 deletions(-) > > > > > > diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c > > > index a2c9d0ed..f1530391 100644 > > > --- a/tests/i915/i915_pm_rpm.c > > > +++ b/tests/i915/i915_pm_rpm.c > > > @@ -571,33 +571,56 @@ static void assert_drm_infos_equal(struct compare_data *d1, > > > assert_drm_crtcs_equal(d1->crtcs[i], d2->crtcs[i]); > > > } > > > > > > -/* We could check the checksum too, but just the header is probably enough. */ > > > -static bool edid_is_valid(const unsigned char *edid) > > > +static bool find_i2c_path(char *connector_name, char *i2c_path) > > > { > > > - char edid_header[] = { > > > - 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, > > > - }; > > > + struct dirent *dirent; > > > + DIR *dir; > > > + int sysfs_card_fd = igt_sysfs_open(drm_fd); > > > + int connector_fd = -1; > > > + bool found_i2c_file = false; > > > > > > - return (memcmp(edid, edid_header, sizeof(edid_header)) == 0); > > > -} > > > + dir = fdopendir(sysfs_card_fd); > > > + igt_assert(dir); > > > > > > -static int count_drm_valid_edids(struct mode_set_data *data) > > > -{ > > > - int ret = 0; > > > + while ((dirent = readdir(dir))) { > > > + /* Skip "cardx-" prefix */ > > > + char *dirname = dirent->d_name; > > > + while(dirname[0] != '\0' && dirname[0] != '-') > > > + ++dirname; > > > > > > - if (!data->res) > > > - return 0; > > > + if(*dirname == '-') > > > + ++dirname; > > > > > > - for (int i = 0; i < data->res->count_connectors; i++) > > > - if (data->edids[i] && edid_is_valid(data->edids[i]->data)) > > > - ret++; > > > - return ret; > > > + if (strcmp(dirname, connector_name) == 0) { > > > + connector_fd = openat(sysfs_card_fd, dirent->d_name, O_RDONLY); > > > + break; > > > + } > > > + } > > > + closedir(dir); > > > + > > > + if(connector_fd < 0) > > > + return false; > > > + > > > + dir = fdopendir(connector_fd); > > > + igt_assert(dir); > > > + > > > + while ((dirent = readdir(dir))) { > > > + if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > > > + sprintf(i2c_path, "/dev/%s", dirent->d_name); > > > + found_i2c_file = true; > > > + } > > > + } > > > + closedir(dir); > > > + return found_i2c_file; > > > } > > > > > > -static bool i2c_edid_is_valid(int fd) > > > + > > > +static bool i2c_read_edid(char *connector_name, unsigned char *edid) > > > { > > > - int rc; > > > - unsigned char edid[128] = {}; > > > + char i2c_path[PATH_MAX]; > > > + bool result = find_i2c_path(connector_name, i2c_path); > > > + int rc, fd; > > > + > > > struct i2c_msg msgs[] = { > > > { /* Start at 0. */ > > > .addr = 0x50, > > > @@ -616,69 +639,86 @@ static bool i2c_edid_is_valid(int fd) > > > .nmsgs = 2, > > > }; > > > > > > + > > > + if (!result) > > > + return false; > > > + > > > + fd = open(i2c_path, O_RDWR); > > > + igt_assert_neq(fd, -1); > > > + > > > rc = ioctl(fd, I2C_RDWR, &msgset); > > > - return (rc >= 0) ? edid_is_valid(edid) : false; > > > + > > > + close(fd); > > > + return rc >= 0; > > > } > > > > > > -static int count_i2c_valid_edids(void) > > > +static void format_hex_string(unsigned char edid[static EDID_LENGTH], > > > + char buf[static EDID_LENGTH * 5 + 1]) > > > { > > > - int fd, ret = 0; > > > - DIR *dir; > > > + for (size_t i = 0; i < EDID_LENGTH; ++i) > > > + sprintf(buf+i*5, "0x%02x ", edid[i]); > > > +} > > > > > > - struct dirent *dirent; > > > - char full_name[PATH_MAX]; > > > +static void test_i2c(struct mode_set_data *data) > > > +{ > > > + bool failed = false; > > > + igt_display_t display; > > > + igt_display_require(&display, drm_fd); > > > > > > - dir = opendir("/dev/"); > > > - igt_assert(dir); > > > + for (int i = 0; i < data->res->count_connectors; i++) { > > > + unsigned char *drm_edid = data->edids[i] ? data->edids[i]->data : NULL; > > > + unsigned char i2c_edid[EDID_LENGTH] = {}; > > > > > > - while ((dirent = readdir(dir))) { > > > - if (strncmp(dirent->d_name, "i2c-", 4) == 0) { > > > - sprintf(full_name, "/dev/%s", dirent->d_name); > > > - fd = open(full_name, O_RDWR); > > > - igt_assert_neq(fd, -1); > > > - if (i2c_edid_is_valid(fd)) > > > - ret++; > > > - close(fd); > > > - } > > > - } > > > + igt_output_t *output = igt_output_from_connector(&display, > > > + data->connectors[i]); > > > + char *connector_name = (char *) igt_output_name(output); > > > > > > - closedir(dir); > > > + bool got_i2c_edid = i2c_read_edid(connector_name, i2c_edid); > > > + bool got_drm_edid = drm_edid != NULL; > > > + bool is_vga = data->connectors[i]->connector_type == DRM_MODE_CONNECTOR_VGA; > > > > > > - return ret; > > > -} > > > + bool edids_equal; > > > > > > -static int count_vga_outputs(struct mode_set_data *data) > > > -{ > > > - int count = 0; > > > + /* We fail to detect some VGA monitors using our i2c method. If you look > > > + * at the dmesg of these cases, you'll see the Kernel complaining about > > > + * the EDID reading mostly FFs and then disabling bit-banging. Since we > > > + * don't want to reimplement everything the Kernel does, let's just > > > + * accept the fact that some VGA outputs won't be properly detected. */ > > > + if(is_vga) > > > + continue; > > > > > > - if (!data->res) > > > - return 0; > > > + if(!got_i2c_edid && !got_drm_edid) > > > + continue; > > > + > > > + if(got_i2c_edid && got_drm_edid) > > > + edids_equal = (0 == memcmp(drm_edid, i2c_edid, EDID_LENGTH)); > > > + else > > > + edids_equal = false; > > > > > > - for (int i = 0; i < data->res->count_connectors; i++) > > > - if (data->connectors[i]->connector_type == > > > - DRM_MODE_CONNECTOR_VGA) > > > - count++; > > > > > > - return count; > > > -} > > > + if (!edids_equal) { > > > + char buf[5 * EDID_LENGTH + 1]; > > > + igt_critical("For connector %s EDID mismatch!\n", > > > + connector_name); > > > > > > -static void test_i2c(struct mode_set_data *data) > > > -{ > > > - int i2c_edids = count_i2c_valid_edids(); > > > - int drm_edids = count_drm_valid_edids(data); > > > - int vga_outputs = count_vga_outputs(data); > > > - int diff; > > > - > > > - igt_debug("i2c edids:%d drm edids:%d vga outputs:%d\n", > > > - i2c_edids, drm_edids, vga_outputs); > > > - > > > - /* We fail to detect some VGA monitors using our i2c method. If you look > > > - * at the dmesg of these cases, you'll see the Kernel complaining about > > > - * the EDID reading mostly FFs and then disabling bit-banging. Since we > > > - * don't want to reimplement everything the Kernel does, let's just > > > - * accept the fact that some VGA outputs won't be properly detected. */ > > > - diff = drm_edids - i2c_edids; > > > - igt_assert(diff <= vga_outputs && diff >= 0); > > > + if(got_i2c_edid) > > > + format_hex_string(i2c_edid, buf); > > > + else > > > + sprintf(buf, "NULL"); > > > + > > > + igt_critical("i2c: %s\n", buf); > > > + > > > + if(got_drm_edid) > > > + format_hex_string(drm_edid, buf); > > > + else > > > + sprintf(buf, "NULL"); > > > + > > > + igt_critical("drm: %s\n", buf); > > > + > > > + failed = true; > > > + } > > > + } > > > + igt_fail_on_f(failed, "Mismatch on EDID we got from i2c and DRM!\n"); > > > } > > > > > > static void setup_pc8(void) > > > -- > > > 2.21.0 > > > > > -- > Ville Syrjälä > Intel _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev 2019-05-07 9:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork 2019-05-07 11:58 ` [igt-dev] [PATCH] " Imre Deak @ 2019-05-07 12:52 ` Patchwork 2019-06-05 12:33 ` [igt-dev] [PATCH] " Oleg Vasilev ` (2 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2019-05-07 12:52 UTC (permalink / raw) To: Oleg Vasilev; +Cc: igt-dev == Series Details == Series: tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest URL : https://patchwork.freedesktop.org/series/60357/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6053_full -> IGTPW_2947_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_2947_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_2947_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://patchwork.freedesktop.org/api/1.0/series/60357/revisions/1/mbox/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_2947_full: ### IGT changes ### #### Possible regressions #### * igt@i915_pm_rpm@i2c: - shard-glk: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-glk5/igt@i915_pm_rpm@i2c.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-glk9/igt@i915_pm_rpm@i2c.html - shard-hsw: [PASS][3] -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-hsw5/igt@i915_pm_rpm@i2c.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-hsw8/igt@i915_pm_rpm@i2c.html Known issues ------------ Here are the changes found in IGTPW_2947_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_rps@min-max-config-loaded: - shard-apl: [PASS][5] -> [FAIL][6] ([fdo#102250]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-apl7/igt@i915_pm_rps@min-max-config-loaded.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-apl2/igt@i915_pm_rps@min-max-config-loaded.html - shard-glk: [PASS][7] -> [FAIL][8] ([fdo#102250]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-glk2/igt@i915_pm_rps@min-max-config-loaded.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-glk6/igt@i915_pm_rps@min-max-config-loaded.html - shard-kbl: [PASS][9] -> [FAIL][10] ([fdo#102250]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-kbl4/igt@i915_pm_rps@min-max-config-loaded.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-kbl1/igt@i915_pm_rps@min-max-config-loaded.html * igt@kms_atomic_interruptible@legacy-cursor: - shard-hsw: [PASS][11] -> [INCOMPLETE][12] ([fdo#103540]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-hsw5/igt@kms_atomic_interruptible@legacy-cursor.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-hsw4/igt@kms_atomic_interruptible@legacy-cursor.html * igt@kms_frontbuffer_tracking@fbc-stridechange: - shard-iclb: [PASS][13] -> [FAIL][14] ([fdo#103167]) +7 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-stridechange.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-iclb4/igt@kms_frontbuffer_tracking@fbc-stridechange.html * igt@kms_plane_scaling@pipe-b-scaler-with-rotation: - shard-glk: [PASS][15] -> [SKIP][16] ([fdo#109271] / [fdo#109278]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-glk9/igt@kms_plane_scaling@pipe-b-scaler-with-rotation.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-glk6/igt@kms_plane_scaling@pipe-b-scaler-with-rotation.html * igt@kms_psr@psr2_primary_page_flip: - shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +2 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-iclb7/igt@kms_psr@psr2_primary_page_flip.html * igt@kms_setmode@basic: - shard-apl: [PASS][19] -> [FAIL][20] ([fdo#99912]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-apl7/igt@kms_setmode@basic.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-apl3/igt@kms_setmode@basic.html * igt@kms_vblank@pipe-c-ts-continuation-suspend: - shard-apl: [PASS][21] -> [DMESG-WARN][22] ([fdo#108566]) +7 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-apl8/igt@kms_vblank@pipe-c-ts-continuation-suspend.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-apl7/igt@kms_vblank@pipe-c-ts-continuation-suspend.html #### Possible fixes #### * igt@i915_suspend@debugfs-reader: - shard-apl: [DMESG-WARN][23] ([fdo#108566]) -> [PASS][24] +3 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-apl6/igt@i915_suspend@debugfs-reader.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-apl7/igt@i915_suspend@debugfs-reader.html * igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible: - shard-hsw: [INCOMPLETE][25] ([fdo#103540]) -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-hsw1/igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-hsw4/igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move: - shard-glk: [FAIL][27] ([fdo#103167]) -> [PASS][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-glk3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-glk8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite: - shard-iclb: [FAIL][29] ([fdo#103167]) -> [PASS][30] +4 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html * igt@kms_plane_lowres@pipe-a-tiling-x: - shard-iclb: [FAIL][31] ([fdo#103166]) -> [PASS][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-x.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-iclb3/igt@kms_plane_lowres@pipe-a-tiling-x.html * igt@kms_setmode@basic: - shard-kbl: [FAIL][33] ([fdo#99912]) -> [PASS][34] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-kbl7/igt@kms_setmode@basic.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-kbl2/igt@kms_setmode@basic.html * igt@perf@oa-exponents: - shard-glk: [FAIL][35] ([fdo#105483]) -> [PASS][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6053/shard-glk5/igt@perf@oa-exponents.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/shard-glk1/igt@perf@oa-exponents.html [fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250 [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540 [fdo#105483]: https://bugs.freedesktop.org/show_bug.cgi?id=105483 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_4972 -> IGTPW_2947 * Piglit: piglit_4509 -> None CI_DRM_6053: 018780091ca311715c4b0595355ac21684cf552e @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_2947: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2947/ IGT_4972: f052e49a43cc9704ea5f240df15dd9d3dfed68ab @ 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_2947/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev ` (2 preceding siblings ...) 2019-05-07 12:52 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork @ 2019-06-05 12:33 ` Oleg Vasilev 2019-06-05 13:51 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) Patchwork 2019-06-06 21:30 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 5 siblings, 0 replies; 9+ messages in thread From: Oleg Vasilev @ 2019-06-05 12:33 UTC (permalink / raw) To: igt-dev Test checked that the number of valid edids from drm is equal to the same number from i2c. Now for each edid the whole blob is compared. In case of mismatch the whole edid is printed. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104097 Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Cc: Imre Deak <imre.deak@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com> --- tests/i915/i915_pm_rpm.c | 176 ++++++++++++++++++++++++--------------- 1 file changed, 108 insertions(+), 68 deletions(-) diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c index a2c9d0ed..f1530391 100644 --- a/tests/i915/i915_pm_rpm.c +++ b/tests/i915/i915_pm_rpm.c @@ -571,33 +571,56 @@ static void assert_drm_infos_equal(struct compare_data *d1, assert_drm_crtcs_equal(d1->crtcs[i], d2->crtcs[i]); } -/* We could check the checksum too, but just the header is probably enough. */ -static bool edid_is_valid(const unsigned char *edid) +static bool find_i2c_path(char *connector_name, char *i2c_path) { - char edid_header[] = { - 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, - }; + struct dirent *dirent; + DIR *dir; + int sysfs_card_fd = igt_sysfs_open(drm_fd); + int connector_fd = -1; + bool found_i2c_file = false; - return (memcmp(edid, edid_header, sizeof(edid_header)) == 0); -} + dir = fdopendir(sysfs_card_fd); + igt_assert(dir); -static int count_drm_valid_edids(struct mode_set_data *data) -{ - int ret = 0; + while ((dirent = readdir(dir))) { + /* Skip "cardx-" prefix */ + char *dirname = dirent->d_name; + while(dirname[0] != '\0' && dirname[0] != '-') + ++dirname; - if (!data->res) - return 0; + if(*dirname == '-') + ++dirname; - for (int i = 0; i < data->res->count_connectors; i++) - if (data->edids[i] && edid_is_valid(data->edids[i]->data)) - ret++; - return ret; + if (strcmp(dirname, connector_name) == 0) { + connector_fd = openat(sysfs_card_fd, dirent->d_name, O_RDONLY); + break; + } + } + closedir(dir); + + if(connector_fd < 0) + return false; + + dir = fdopendir(connector_fd); + igt_assert(dir); + + while ((dirent = readdir(dir))) { + if (strncmp(dirent->d_name, "i2c-", 4) == 0) { + sprintf(i2c_path, "/dev/%s", dirent->d_name); + found_i2c_file = true; + } + } + closedir(dir); + return found_i2c_file; } -static bool i2c_edid_is_valid(int fd) + +static bool i2c_read_edid(char *connector_name, unsigned char *edid) { - int rc; - unsigned char edid[128] = {}; + char i2c_path[PATH_MAX]; + bool result = find_i2c_path(connector_name, i2c_path); + int rc, fd; + struct i2c_msg msgs[] = { { /* Start at 0. */ .addr = 0x50, @@ -616,69 +639,86 @@ static bool i2c_edid_is_valid(int fd) .nmsgs = 2, }; + + if (!result) + return false; + + fd = open(i2c_path, O_RDWR); + igt_assert_neq(fd, -1); + rc = ioctl(fd, I2C_RDWR, &msgset); - return (rc >= 0) ? edid_is_valid(edid) : false; + + close(fd); + return rc >= 0; } -static int count_i2c_valid_edids(void) +static void format_hex_string(unsigned char edid[static EDID_LENGTH], + char buf[static EDID_LENGTH * 5 + 1]) { - int fd, ret = 0; - DIR *dir; + for (size_t i = 0; i < EDID_LENGTH; ++i) + sprintf(buf+i*5, "0x%02x ", edid[i]); +} - struct dirent *dirent; - char full_name[PATH_MAX]; +static void test_i2c(struct mode_set_data *data) +{ + bool failed = false; + igt_display_t display; + igt_display_require(&display, drm_fd); - dir = opendir("/dev/"); - igt_assert(dir); + for (int i = 0; i < data->res->count_connectors; i++) { + unsigned char *drm_edid = data->edids[i] ? data->edids[i]->data : NULL; + unsigned char i2c_edid[EDID_LENGTH] = {}; - while ((dirent = readdir(dir))) { - if (strncmp(dirent->d_name, "i2c-", 4) == 0) { - sprintf(full_name, "/dev/%s", dirent->d_name); - fd = open(full_name, O_RDWR); - igt_assert_neq(fd, -1); - if (i2c_edid_is_valid(fd)) - ret++; - close(fd); - } - } + igt_output_t *output = igt_output_from_connector(&display, + data->connectors[i]); + char *connector_name = (char *) igt_output_name(output); - closedir(dir); + bool got_i2c_edid = i2c_read_edid(connector_name, i2c_edid); + bool got_drm_edid = drm_edid != NULL; + bool is_vga = data->connectors[i]->connector_type == DRM_MODE_CONNECTOR_VGA; - return ret; -} + bool edids_equal; -static int count_vga_outputs(struct mode_set_data *data) -{ - int count = 0; + /* We fail to detect some VGA monitors using our i2c method. If you look + * at the dmesg of these cases, you'll see the Kernel complaining about + * the EDID reading mostly FFs and then disabling bit-banging. Since we + * don't want to reimplement everything the Kernel does, let's just + * accept the fact that some VGA outputs won't be properly detected. */ + if(is_vga) + continue; - if (!data->res) - return 0; + if(!got_i2c_edid && !got_drm_edid) + continue; + + if(got_i2c_edid && got_drm_edid) + edids_equal = (0 == memcmp(drm_edid, i2c_edid, EDID_LENGTH)); + else + edids_equal = false; - for (int i = 0; i < data->res->count_connectors; i++) - if (data->connectors[i]->connector_type == - DRM_MODE_CONNECTOR_VGA) - count++; - return count; -} + if (!edids_equal) { + char buf[5 * EDID_LENGTH + 1]; + igt_critical("For connector %s EDID mismatch!\n", + connector_name); -static void test_i2c(struct mode_set_data *data) -{ - int i2c_edids = count_i2c_valid_edids(); - int drm_edids = count_drm_valid_edids(data); - int vga_outputs = count_vga_outputs(data); - int diff; - - igt_debug("i2c edids:%d drm edids:%d vga outputs:%d\n", - i2c_edids, drm_edids, vga_outputs); - - /* We fail to detect some VGA monitors using our i2c method. If you look - * at the dmesg of these cases, you'll see the Kernel complaining about - * the EDID reading mostly FFs and then disabling bit-banging. Since we - * don't want to reimplement everything the Kernel does, let's just - * accept the fact that some VGA outputs won't be properly detected. */ - diff = drm_edids - i2c_edids; - igt_assert(diff <= vga_outputs && diff >= 0); + if(got_i2c_edid) + format_hex_string(i2c_edid, buf); + else + sprintf(buf, "NULL"); + + igt_critical("i2c: %s\n", buf); + + if(got_drm_edid) + format_hex_string(drm_edid, buf); + else + sprintf(buf, "NULL"); + + igt_critical("drm: %s\n", buf); + + failed = true; + } + } + igt_fail_on_f(failed, "Mismatch on EDID we got from i2c and DRM!\n"); } static void setup_pc8(void) -- 2.21.0 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev ` (3 preceding siblings ...) 2019-06-05 12:33 ` [igt-dev] [PATCH] " Oleg Vasilev @ 2019-06-05 13:51 ` Patchwork 2019-06-06 21:30 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 5 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2019-06-05 13:51 UTC (permalink / raw) To: Oleg Vasilev; +Cc: igt-dev == Series Details == Series: tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) URL : https://patchwork.freedesktop.org/series/60357/ State : success == Summary == CI Bug Log - changes from CI_DRM_6195 -> IGTPW_3118 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/60357/revisions/2/mbox/ Known issues ------------ Here are the changes found in IGTPW_3118 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [PASS][1] -> [FAIL][2] ([fdo#109485]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html * igt@vgem_basic@unload: - fi-icl-u3: [PASS][3] -> [DMESG-WARN][4] ([fdo#107724]) +1 similar issue [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-icl-u3/igt@vgem_basic@unload.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/fi-icl-u3/igt@vgem_basic@unload.html #### Possible fixes #### * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: [DMESG-WARN][5] ([fdo#102614]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html * igt@prime_vgem@basic-fence-flip: - fi-icl-u3: [DMESG-WARN][7] ([fdo#107724]) -> [PASS][8] +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/fi-icl-u3/igt@prime_vgem@basic-fence-flip.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/fi-icl-u3/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#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602 [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485 Participating hosts (52 -> 46) ------------------------------ Additional (1): fi-apl-guc Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus Build changes ------------- * IGT: IGT_5039 -> IGTPW_3118 CI_DRM_6195: 06b71939f2477c76f9eecb1dd5e99dcb25cb8371 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3118: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/ IGT_5039: 2d4f470bba1cb51ed116fb80b170f717c6294714 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev ` (4 preceding siblings ...) 2019-06-05 13:51 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) Patchwork @ 2019-06-06 21:30 ` Patchwork 5 siblings, 0 replies; 9+ messages in thread From: Patchwork @ 2019-06-06 21:30 UTC (permalink / raw) To: Oleg Vasilev; +Cc: igt-dev == Series Details == Series: tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) URL : https://patchwork.freedesktop.org/series/60357/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6195_full -> IGTPW_3118_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_3118_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_3118_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://patchwork.freedesktop.org/api/1.0/series/60357/revisions/2/mbox/ Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_3118_full: ### IGT changes ### #### Possible regressions #### * igt@gem_mmap_gtt@forked-big-copy-odd: - shard-kbl: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-kbl2/igt@gem_mmap_gtt@forked-big-copy-odd.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-kbl6/igt@gem_mmap_gtt@forked-big-copy-odd.html * igt@i915_pm_rpm@i2c: - shard-hsw: [PASS][3] -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw7/igt@i915_pm_rpm@i2c.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-hsw1/igt@i915_pm_rpm@i2c.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * {igt@gem_exec_balancer@bonded-cork}: - shard-iclb: [PASS][5] -> [FAIL][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb6/igt@gem_exec_balancer@bonded-cork.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb2/igt@gem_exec_balancer@bonded-cork.html Known issues ------------ Here are the changes found in IGTPW_3118_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_mmap_gtt@forked-big-copy: - shard-iclb: [PASS][7] -> [TIMEOUT][8] ([fdo#109673]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb4/igt@gem_mmap_gtt@forked-big-copy.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb1/igt@gem_mmap_gtt@forked-big-copy.html * igt@gem_tiled_swapping@non-threaded: - shard-glk: [PASS][9] -> [DMESG-WARN][10] ([fdo#108686]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-glk3/igt@gem_tiled_swapping@non-threaded.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-glk6/igt@gem_tiled_swapping@non-threaded.html * igt@i915_suspend@debugfs-reader: - shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#108566]) +4 similar issues [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl4/igt@i915_suspend@debugfs-reader.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-apl4/igt@i915_suspend@debugfs-reader.html * igt@kms_cursor_crc@pipe-c-cursor-64x21-sliding: - shard-kbl: [PASS][13] -> [FAIL][14] ([fdo#103232]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-kbl1/igt@kms_cursor_crc@pipe-c-cursor-64x21-sliding.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-kbl1/igt@kms_cursor_crc@pipe-c-cursor-64x21-sliding.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: - shard-hsw: [PASS][15] -> [SKIP][16] ([fdo#109271]) +30 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw4/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-hsw1/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html * igt@kms_flip@2x-flip-vs-expired-vblank: - shard-glk: [PASS][17] -> [FAIL][18] ([fdo#105363]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-glk4/igt@kms_flip@2x-flip-vs-expired-vblank.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt: - shard-iclb: [PASS][19] -> [FAIL][20] ([fdo#103167]) +4 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html * igt@kms_psr@psr2_primary_render: - shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb2/igt@kms_psr@psr2_primary_render.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb7/igt@kms_psr@psr2_primary_render.html * igt@kms_setmode@basic: - shard-kbl: [PASS][23] -> [FAIL][24] ([fdo#99912]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-kbl3/igt@kms_setmode@basic.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-kbl2/igt@kms_setmode@basic.html * igt@kms_sysfs_edid_timing: - shard-hsw: [PASS][25] -> [FAIL][26] ([fdo#100047]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw4/igt@kms_sysfs_edid_timing.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-hsw1/igt@kms_sysfs_edid_timing.html #### Possible fixes #### * {igt@gem_ctx_param@vm}: - shard-hsw: [DMESG-WARN][27] ([fdo#110836]) -> [PASS][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw5/igt@gem_ctx_param@vm.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-hsw1/igt@gem_ctx_param@vm.html * {igt@gem_exec_balancer@bonded-imm}: - shard-iclb: [FAIL][29] -> [PASS][30] [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb4/igt@gem_exec_balancer@bonded-imm.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb8/igt@gem_exec_balancer@bonded-imm.html * igt@gem_tiled_swapping@non-threaded: - shard-apl: [DMESG-WARN][31] ([fdo#108686]) -> [PASS][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl2/igt@gem_tiled_swapping@non-threaded.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-apl5/igt@gem_tiled_swapping@non-threaded.html * igt@gem_workarounds@suspend-resume-context: - shard-apl: [DMESG-WARN][33] ([fdo#108566]) -> [PASS][34] +4 similar issues [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-apl6/igt@gem_workarounds@suspend-resume-context.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-apl7/igt@gem_workarounds@suspend-resume-context.html * igt@kms_flip@flip-vs-suspend: - shard-kbl: [INCOMPLETE][35] ([fdo#103665]) -> [PASS][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-kbl6/igt@kms_flip@flip-vs-suspend.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-kbl6/igt@kms_flip@flip-vs-suspend.html * igt@kms_frontbuffer_tracking@fbc-1p-rte: - shard-iclb: [FAIL][37] ([fdo#103167] / [fdo#110378]) -> [PASS][38] [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-rte.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb5/igt@kms_frontbuffer_tracking@fbc-1p-rte.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite: - shard-hsw: [SKIP][39] ([fdo#109271]) -> [PASS][40] +17 similar issues [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-hsw8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite: - shard-iclb: [FAIL][41] ([fdo#103167]) -> [PASS][42] +2 similar issues [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html * igt@kms_psr2_su@page_flip: - shard-iclb: [SKIP][43] ([fdo#109642]) -> [PASS][44] [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb1/igt@kms_psr2_su@page_flip.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb2/igt@kms_psr2_su@page_flip.html * igt@kms_psr@psr2_sprite_mmap_gtt: - shard-iclb: [SKIP][45] ([fdo#109441]) -> [PASS][46] [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6195/shard-iclb7/igt@kms_psr@psr2_sprite_mmap_gtt.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#109673]: https://bugs.freedesktop.org/show_bug.cgi?id=109673 [fdo#110378]: https://bugs.freedesktop.org/show_bug.cgi?id=110378 [fdo#110836]: https://bugs.freedesktop.org/show_bug.cgi?id=110836 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (10 -> 6) ------------------------------ Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 Build changes ------------- * IGT: IGT_5039 -> IGTPW_3118 * Piglit: piglit_4509 -> None CI_DRM_6195: 06b71939f2477c76f9eecb1dd5e99dcb25cb8371 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3118: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3118/ IGT_5039: 2d4f470bba1cb51ed116fb80b170f717c6294714 @ 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_3118/ _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-06-06 21:30 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-05-07 8:51 [igt-dev] [PATCH] tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest Oleg Vasilev 2019-05-07 9:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork 2019-05-07 11:58 ` [igt-dev] [PATCH] " Imre Deak 2019-05-07 12:25 ` Ville Syrjälä 2019-05-07 13:28 ` Imre Deak 2019-05-07 12:52 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork 2019-06-05 12:33 ` [igt-dev] [PATCH] " Oleg Vasilev 2019-06-05 13:51 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/i915_pm_rpm: improved strictness and verbosity of i2c subtest (rev2) Patchwork 2019-06-06 21:30 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox