* [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes
@ 2022-12-15 2:31 Ashutosh Dixit
2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Ashutosh Dixit @ 2022-12-15 2:31 UTC (permalink / raw)
To: igt-dev; +Cc: Badal Nilawar
Ensure we can read all hwmon attributes. For writable attributes, also
ensure the read value approximately matches the written value, taking the
clamping of writes into account.
v2: Added new patch "lib/igt_sysfs: Make it easier to extend verification
of clamped sysfs attr". No changes to previous patches.
v3: Identical to v2, failed to copy reviewers
v4: Drop the concept of a 'clamped' sysfs attribute, it is not
necessary. All we need is a writable attribute for which the read
values will match the written values for a few points across the range
of all possible values.
v5: Dropped function rw_attr_reverify_points since it was repeating the
verification already done during the sweep so has limited utility. This
results in simplifying the code even more.
Ashutosh Dixit (3):
lib/igt_sysfs: Generic verification of writable sysfs attributes
i915/i915_hwmon: General verification of hwmon attributes
HAX: Add i915_hwmon* to fast-feedback.testlist
lib/igt_sysfs.c | 79 ++++++++++++++++++++++++
lib/igt_sysfs.h | 20 ++++++
tests/i915/i915_hwmon.c | 88 +++++++++++++++++++++++++++
tests/intel-ci/fast-feedback.testlist | 2 +
tests/meson.build | 1 +
5 files changed, 190 insertions(+)
create mode 100644 tests/i915/i915_hwmon.c
--
2.38.0
^ permalink raw reply [flat|nested] 13+ messages in thread* [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit @ 2022-12-15 2:31 ` Ashutosh Dixit 2022-12-15 11:49 ` Tauro, Riana 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit ` (3 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Ashutosh Dixit @ 2022-12-15 2:31 UTC (permalink / raw) To: igt-dev; +Cc: Badal Nilawar Attempt to verify writable sysfs attributes in a generic way, without going into the specifics of any attribute. The attribute is first written to and then read back and it is verified that the read value matches the written value to a tolerance. However, when we try to do this we run into the issue that a sysfs attribute might have a behavior where the read value is different from the written value for any reason. For example, attributes such as power, voltage, frequency and time typically have a linear region outside which they are clamped (the values saturate). Therefore for such attributes read values match the written value only in the linear region and when writing we don't know if we are writing to the linear or to the clamped region. Therefore the verification implemented here takes the approach of sweeping across the range of possible values of the attribute (this is done using 'doubling' rather than linearly) and seeing where there are matches. There should be at least one match for the verification to have succeeded. Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> --- lib/igt_sysfs.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/igt_sysfs.h | 20 +++++++++++++ 2 files changed, 99 insertions(+) diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c index a913be4c8f2..c1f8e2d8632 100644 --- a/lib/igt_sysfs.c +++ b/lib/igt_sysfs.c @@ -784,3 +784,82 @@ void fbcon_blink_enable(bool enable) write(fd, buffer, r + 1); close(fd); } + +static bool rw_attr_equal_within_epsilon(uint64_t x, uint64_t ref, double tol) +{ + return (x <= (1.0 + tol) * ref) && (x >= (1.0 - tol) * ref); +} + +/* Sweep the range of values for an attribute to identify matching reads/writes */ +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) +{ + uint64_t get, set = rw->start; + int num_points = 0; + bool ret; + + igt_debug("'%s': sweeping range of values\n", rw->attr); + while (1) { + if (set >= UINT64_MAX / 2) { + igt_debug("'%s': done sweeping\n", rw->attr); + break; + } + + ret = igt_sysfs_set_u64(rw->dir, rw->attr, set); + get = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_debug("'%s': ret %d set %lu get %lu\n", rw->attr, ret, set, get); + if (ret && rw_attr_equal_within_epsilon(get, set, rw->tol)) { + igt_debug("'%s': matches\n", rw->attr); + num_points++; + } + + set *= 2; + } + + return num_points ? 0 : -ENOENT; +} + +/** + * igt_sysfs_rw_attr_verify: + * @rw: 'struct igt_sysfs_rw_attr' describing a rw sysfs attr + * + * This function attempts to verify writable sysfs attributes, that is the + * attribute is first written to and then read back and it is verified that + * the read value matches the written value to a tolerance. However, when + * we try to do this we run into the issue that a sysfs attribute might + * have a behavior where the read value is different from the written value + * for any reason. For example, attributes such as power, voltage, + * frequency and time typically have a linear region outside which they are + * clamped (the values saturate). Therefore for such attributes read values + * match the written value only in the linear region and when writing we + * don't know if we are writing to the linear or to the clamped region. + * + * Therefore the verification implemented here takes the approach of + * sweeping across the range of possible values of the attribute (this is + * done using 'doubling' rather than linearly) and seeing where there are + * matches. There should be at least one match (to a tolerance) for the + * verification to have succeeded. + */ +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw) +{ + uint64_t prev, get; + struct stat st; + int ret; + + igt_assert(!fstatat(rw->dir, rw->attr, &st, 0)); + igt_assert(st.st_mode & 0222); /* writable */ + igt_assert(rw->start); /* cannot be 0 */ + + prev = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_debug("'%s': prev %lu\n", rw->attr, prev); + + ret = rw_attr_sweep(rw); + + /* + * Restore previous value: we don't assert before this point so + * that we can restore the attr before asserting + */ + igt_assert_eq(1, igt_sysfs_set_u64(rw->dir, rw->attr, prev)); + get = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_assert_eq(get, prev); + igt_assert(!ret); +} diff --git a/lib/igt_sysfs.h b/lib/igt_sysfs.h index 1c9791a1bdc..2e3c4813adc 100644 --- a/lib/igt_sysfs.h +++ b/lib/igt_sysfs.h @@ -125,4 +125,24 @@ void bind_fbcon(bool enable); void kick_snd_hda_intel(void); void fbcon_blink_enable(bool enable); +/** + * igt_sysfs_rw_attr: + * @dir: file descriptor for parent directory + * @attr: name of sysfs attribute + * @start: start value for searching for matching reads/writes + * @tol: tolerance to use to compare written and read values + * @rsvd: reserved field used internally + * + * Structure used to describe the rw sysfs attribute to + * igt_sysfs_rw_attr_verify + */ +typedef struct igt_sysfs_rw_attr { + int dir; + char *attr; + uint64_t start; + double tol; +} igt_sysfs_rw_attr_t; + +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw); + #endif /* __IGT_SYSFS_H__ */ -- 2.38.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit @ 2022-12-15 11:49 ` Tauro, Riana 2022-12-15 18:20 ` Dixit, Ashutosh 0 siblings, 1 reply; 13+ messages in thread From: Tauro, Riana @ 2022-12-15 11:49 UTC (permalink / raw) To: Ashutosh Dixit, igt-dev, Badal Nilawar On 12/15/2022 8:01 AM, Ashutosh Dixit wrote: > Attempt to verify writable sysfs attributes in a generic way, without going > into the specifics of any attribute. The attribute is first written to and > then read back and it is verified that the read value matches the written > value to a tolerance. However, when we try to do this we run into the issue > that a sysfs attribute might have a behavior where the read value is > different from the written value for any reason. For example, attributes > such as power, voltage, frequency and time typically have a linear region > outside which they are clamped (the values saturate). Therefore for such > attributes read values match the written value only in the linear region > and when writing we don't know if we are writing to the linear or to the > clamped region. > > Therefore the verification implemented here takes the approach of sweeping > across the range of possible values of the attribute (this is done using > 'doubling' rather than linearly) and seeing where there are matches. There > should be at least one match for the verification to have succeeded. > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> > --- > lib/igt_sysfs.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ > lib/igt_sysfs.h | 20 +++++++++++++ > 2 files changed, 99 insertions(+) > > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c > index a913be4c8f2..c1f8e2d8632 100644 > --- a/lib/igt_sysfs.c > +++ b/lib/igt_sysfs.c > @@ -784,3 +784,82 @@ void fbcon_blink_enable(bool enable) > write(fd, buffer, r + 1); > close(fd); > } > + > +static bool rw_attr_equal_within_epsilon(uint64_t x, uint64_t ref, double tol) > +{ > + return (x <= (1.0 + tol) * ref) && (x >= (1.0 - tol) * ref); > +} > + > +/* Sweep the range of values for an attribute to identify matching reads/writes */ > +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) > +{ > + uint64_t get, set = rw->start; > + int num_points = 0; > + bool ret; > + Hi Ashutosh Thanks for the clarification regarding the clamp max on the previous rev. done sweeping igt_debug can be retained outside the while since there is no break/return anywhere else. Though not necessary since it behaves the same. Looks good to me Reviewed-by: Riana Tauro <riana.tauro@intel.com> > + igt_debug("'%s': sweeping range of values\n", rw->attr); > + while (1) { > + if (set >= UINT64_MAX / 2) { > + igt_debug("'%s': done sweeping\n", rw->attr); > + break; > + } > + > + ret = igt_sysfs_set_u64(rw->dir, rw->attr, set); > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_debug("'%s': ret %d set %lu get %lu\n", rw->attr, ret, set, get); > + if (ret && rw_attr_equal_within_epsilon(get, set, rw->tol)) { > + igt_debug("'%s': matches\n", rw->attr); > + num_points++; > + } > + > + set *= 2; > + } > + > + return num_points ? 0 : -ENOENT; > +} > + > +/** > + * igt_sysfs_rw_attr_verify: > + * @rw: 'struct igt_sysfs_rw_attr' describing a rw sysfs attr > + * > + * This function attempts to verify writable sysfs attributes, that is the > + * attribute is first written to and then read back and it is verified that > + * the read value matches the written value to a tolerance. However, when > + * we try to do this we run into the issue that a sysfs attribute might > + * have a behavior where the read value is different from the written value > + * for any reason. For example, attributes such as power, voltage, > + * frequency and time typically have a linear region outside which they are > + * clamped (the values saturate). Therefore for such attributes read values > + * match the written value only in the linear region and when writing we > + * don't know if we are writing to the linear or to the clamped region. > + * > + * Therefore the verification implemented here takes the approach of > + * sweeping across the range of possible values of the attribute (this is > + * done using 'doubling' rather than linearly) and seeing where there are > + * matches. There should be at least one match (to a tolerance) for the > + * verification to have succeeded. > + */ > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw) > +{ > + uint64_t prev, get; > + struct stat st; > + int ret; > + > + igt_assert(!fstatat(rw->dir, rw->attr, &st, 0)); > + igt_assert(st.st_mode & 0222); /* writable */ > + igt_assert(rw->start); /* cannot be 0 */ > + > + prev = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_debug("'%s': prev %lu\n", rw->attr, prev); > + > + ret = rw_attr_sweep(rw); > + > + /* > + * Restore previous value: we don't assert before this point so > + * that we can restore the attr before asserting > + */ > + igt_assert_eq(1, igt_sysfs_set_u64(rw->dir, rw->attr, prev)); > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_assert_eq(get, prev); > + igt_assert(!ret); > +} > diff --git a/lib/igt_sysfs.h b/lib/igt_sysfs.h > index 1c9791a1bdc..2e3c4813adc 100644 > --- a/lib/igt_sysfs.h > +++ b/lib/igt_sysfs.h > @@ -125,4 +125,24 @@ void bind_fbcon(bool enable); > void kick_snd_hda_intel(void); > void fbcon_blink_enable(bool enable); > > +/** > + * igt_sysfs_rw_attr: > + * @dir: file descriptor for parent directory > + * @attr: name of sysfs attribute > + * @start: start value for searching for matching reads/writes > + * @tol: tolerance to use to compare written and read values > + * @rsvd: reserved field used internally > + * > + * Structure used to describe the rw sysfs attribute to > + * igt_sysfs_rw_attr_verify > + */ > +typedef struct igt_sysfs_rw_attr { > + int dir; > + char *attr; > + uint64_t start; > + double tol; > +} igt_sysfs_rw_attr_t; > + > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw); > + > #endif /* __IGT_SYSFS_H__ */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-15 11:49 ` Tauro, Riana @ 2022-12-15 18:20 ` Dixit, Ashutosh 0 siblings, 0 replies; 13+ messages in thread From: Dixit, Ashutosh @ 2022-12-15 18:20 UTC (permalink / raw) To: Tauro, Riana; +Cc: igt-dev, Badal Nilawar On Thu, 15 Dec 2022 03:49:30 -0800, Tauro, Riana wrote: > > On 12/15/2022 8:01 AM, Ashutosh Dixit wrote: > > +/* Sweep the range of values for an attribute to identify matching reads/writes */ > > +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) > > +{ > > + uint64_t get, set = rw->start; > > + int num_points = 0; > > + bool ret; > > + > Hi Ashutosh > > Thanks for the clarification regarding the clamp max on the previous rev. > done sweeping igt_debug can be retained outside the while since there is no > break/return anywhere else. > > Though not necessary since it behaves the same. > > Looks good to me > Reviewed-by: Riana Tauro <riana.tauro@intel.com> Thanks Riana, I made the above change and merged :) ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit @ 2022-12-15 2:31 ` Ashutosh Dixit 2022-12-15 5:30 ` Tauro, Riana 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 3/3] HAX: Add i915_hwmon* to fast-feedback.testlist Ashutosh Dixit ` (2 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Ashutosh Dixit @ 2022-12-15 2:31 UTC (permalink / raw) To: igt-dev; +Cc: Badal Nilawar Ensure we can read all hwmon attributes. For writable attributes, ensure the read value approximately matches the written value for a subset of all possible values. Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> --- tests/i915/i915_hwmon.c | 88 +++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 2 files changed, 89 insertions(+) create mode 100644 tests/i915/i915_hwmon.c diff --git a/tests/i915/i915_hwmon.c b/tests/i915/i915_hwmon.c new file mode 100644 index 00000000000..6d9937e99dc --- /dev/null +++ b/tests/i915/i915_hwmon.c @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2022 Intel Corporation + */ + +#include <dirent.h> +#include <sys/stat.h> +#include "igt.h" +#include "igt_hwmon.h" +#include "igt_sysfs.h" + +IGT_TEST_DESCRIPTION("Tests for i915 hwmon"); + +static void hwmon_read(int hwm) +{ + struct dirent *de; + char val[128]; + DIR *dir; + + dir = fdopendir(dup(hwm)); + igt_assert(dir); + rewinddir(dir); + + while ((de = readdir(dir))) { + if (de->d_type != DT_REG || !strcmp(de->d_name, "uevent")) + continue; + + igt_assert(igt_sysfs_scanf(hwm, de->d_name, "%127s", val) == 1); + igt_debug("'%s': %s\n", de->d_name, val); + + } + closedir(dir); +} + +static void hwmon_write(int hwm) +{ + igt_sysfs_rw_attr_t rw; + struct dirent *de; + struct stat st; + DIR *dir; + + dir = fdopendir(dup(hwm)); + igt_assert(dir); + rewinddir(dir); + + rw.dir = hwm; + rw.start = 1; + rw.tol = 0.1; + + while ((de = readdir(dir))) { + if (de->d_type != DT_REG || !strcmp(de->d_name, "uevent")) + continue; + + igt_assert(!fstatat(hwm, de->d_name, &st, 0)); + if (!(st.st_mode & 0222)) + continue; + + rw.attr = de->d_name; + igt_sysfs_rw_attr_verify(&rw); + } + closedir(dir); +} + +igt_main +{ + int fd, hwm; + + igt_fixture { + fd = drm_open_driver_master(DRIVER_INTEL); + hwm = igt_hwmon_open(fd); + igt_require(hwm >= 0); + } + + igt_describe("Verify we can read all hwmon attributes"); + igt_subtest("hwmon-read") { + hwmon_read(hwm); + } + + igt_describe("Verify writable hwmon attributes"); + igt_subtest("hwmon-write") { + hwmon_write(hwm); + } + + igt_fixture { + close(hwm); + close(fd); + } +} diff --git a/tests/meson.build b/tests/meson.build index 619c18b2516..a593055c23a 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -211,6 +211,7 @@ i915_progs = [ 'i915_fb_tiling', 'i915_getparams_basic', 'i915_hangman', + 'i915_hwmon', 'i915_module_load', 'i915_pciid', 'i915_pipe_stress', -- 2.38.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit @ 2022-12-15 5:30 ` Tauro, Riana 0 siblings, 0 replies; 13+ messages in thread From: Tauro, Riana @ 2022-12-15 5:30 UTC (permalink / raw) To: Ashutosh Dixit, igt-dev, Badal Nilawar On 12/15/2022 8:01 AM, Ashutosh Dixit wrote: > Ensure we can read all hwmon attributes. For writable attributes, ensure > the read value approximately matches the written value for a subset of all > possible values. > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Looks good to me Reviewed-by: Riana Tauro <riana.tauro@intel.com> > --- > tests/i915/i915_hwmon.c | 88 +++++++++++++++++++++++++++++++++++++++++ > tests/meson.build | 1 + > 2 files changed, 89 insertions(+) > create mode 100644 tests/i915/i915_hwmon.c > > diff --git a/tests/i915/i915_hwmon.c b/tests/i915/i915_hwmon.c > new file mode 100644 > index 00000000000..6d9937e99dc > --- /dev/null > +++ b/tests/i915/i915_hwmon.c > @@ -0,0 +1,88 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2022 Intel Corporation > + */ > + > +#include <dirent.h> > +#include <sys/stat.h> > +#include "igt.h" > +#include "igt_hwmon.h" > +#include "igt_sysfs.h" > + > +IGT_TEST_DESCRIPTION("Tests for i915 hwmon"); > + > +static void hwmon_read(int hwm) > +{ > + struct dirent *de; > + char val[128]; > + DIR *dir; > + > + dir = fdopendir(dup(hwm)); > + igt_assert(dir); > + rewinddir(dir); > + > + while ((de = readdir(dir))) { > + if (de->d_type != DT_REG || !strcmp(de->d_name, "uevent")) > + continue; > + > + igt_assert(igt_sysfs_scanf(hwm, de->d_name, "%127s", val) == 1); > + igt_debug("'%s': %s\n", de->d_name, val); > + > + } > + closedir(dir); > +} > + > +static void hwmon_write(int hwm) > +{ > + igt_sysfs_rw_attr_t rw; > + struct dirent *de; > + struct stat st; > + DIR *dir; > + > + dir = fdopendir(dup(hwm)); > + igt_assert(dir); > + rewinddir(dir); > + > + rw.dir = hwm; > + rw.start = 1; > + rw.tol = 0.1; > + > + while ((de = readdir(dir))) { > + if (de->d_type != DT_REG || !strcmp(de->d_name, "uevent")) > + continue; > + > + igt_assert(!fstatat(hwm, de->d_name, &st, 0)); > + if (!(st.st_mode & 0222)) > + continue; > + > + rw.attr = de->d_name; > + igt_sysfs_rw_attr_verify(&rw); > + } > + closedir(dir); > +} > + > +igt_main > +{ > + int fd, hwm; > + > + igt_fixture { > + fd = drm_open_driver_master(DRIVER_INTEL); > + hwm = igt_hwmon_open(fd); > + igt_require(hwm >= 0); > + } > + > + igt_describe("Verify we can read all hwmon attributes"); > + igt_subtest("hwmon-read") { > + hwmon_read(hwm); > + } > + > + igt_describe("Verify writable hwmon attributes"); > + igt_subtest("hwmon-write") { > + hwmon_write(hwm); > + } > + > + igt_fixture { > + close(hwm); > + close(fd); > + } > +} > diff --git a/tests/meson.build b/tests/meson.build > index 619c18b2516..a593055c23a 100644 > --- a/tests/meson.build > +++ b/tests/meson.build > @@ -211,6 +211,7 @@ i915_progs = [ > 'i915_fb_tiling', > 'i915_getparams_basic', > 'i915_hangman', > + 'i915_hwmon', > 'i915_module_load', > 'i915_pciid', > 'i915_pipe_stress', ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 3/3] HAX: Add i915_hwmon* to fast-feedback.testlist 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit @ 2022-12-15 2:31 ` Ashutosh Dixit 2022-12-15 3:08 ` [igt-dev] ✓ Fi.CI.BAT: success for i915/i915_hwmon: General verification of hwmon attributes (rev5) Patchwork 2022-12-16 10:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 13+ messages in thread From: Ashutosh Dixit @ 2022-12-15 2:31 UTC (permalink / raw) To: igt-dev; +Cc: Badal Nilawar For CI. Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> --- tests/intel-ci/fast-feedback.testlist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist index 88c90221e5a..1b134bc9394 100644 --- a/tests/intel-ci/fast-feedback.testlist +++ b/tests/intel-ci/fast-feedback.testlist @@ -53,6 +53,8 @@ igt@gem_wait@wait@all-engines igt@i915_getparams_basic@basic-eu-total igt@i915_getparams_basic@basic-subslice-total igt@i915_hangman@error-state-basic +igt@i915_hwmon@hwmon-read +igt@i915_hwmon@hwmon-write igt@i915_pciid igt@kms_addfb_basic@addfb25-bad-modifier igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling -- 2.38.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for i915/i915_hwmon: General verification of hwmon attributes (rev5) 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit ` (2 preceding siblings ...) 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 3/3] HAX: Add i915_hwmon* to fast-feedback.testlist Ashutosh Dixit @ 2022-12-15 3:08 ` Patchwork 2022-12-16 10:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2022-12-15 3:08 UTC (permalink / raw) To: Ashutosh Dixit; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 6334 bytes --] == Series Details == Series: i915/i915_hwmon: General verification of hwmon attributes (rev5) URL : https://patchwork.freedesktop.org/series/111833/ State : success == Summary == CI Bug Log - changes from CI_DRM_12506 -> IGTPW_8235 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html Participating hosts (40 -> 18) ------------------------------ Missing (22): fi-kbl-soraka bat-dg1-6 bat-dg1-5 fi-snb-2520m bat-adlp-6 fi-pnv-d510 bat-rpls-1 fi-skl-6600u fi-bsw-n3050 bat-dg2-8 bat-adlm-1 bat-dg2-9 bat-adln-1 bat-atsm-1 bat-jsl-3 bat-rplp-1 bat-dg2-11 fi-bsw-nick bat-dg1-7 bat-kbl-2 bat-adlp-9 bat-adlp-4 Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_8235: ### IGT changes ### #### Possible regressions #### * {igt@i915_hwmon@hwmon-read} (NEW): - fi-rkl-11600: NOTRUN -> [SKIP][1] +1 similar issue [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-rkl-11600/igt@i915_hwmon@hwmon-read.html - fi-adl-ddr5: NOTRUN -> [SKIP][2] +1 similar issue [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-adl-ddr5/igt@i915_hwmon@hwmon-read.html - {fi-ehl-2}: NOTRUN -> [SKIP][3] +1 similar issue [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-ehl-2/igt@i915_hwmon@hwmon-read.html * {igt@i915_hwmon@hwmon-write} (NEW): - {fi-jsl-1}: NOTRUN -> [SKIP][4] +1 similar issue [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-jsl-1/igt@i915_hwmon@hwmon-write.html - fi-icl-u2: NOTRUN -> [SKIP][5] +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-icl-u2/igt@i915_hwmon@hwmon-write.html - fi-rkl-guc: NOTRUN -> [SKIP][6] +1 similar issue [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-rkl-guc/igt@i915_hwmon@hwmon-write.html New tests --------- New tests have been introduced between CI_DRM_12506 and IGTPW_8235: ### New IGT tests (2) ### * igt@i915_hwmon@hwmon-read: - Statuses : 18 skip(s) - Exec time: [0.0] s * igt@i915_hwmon@hwmon-write: - Statuses : 18 skip(s) - Exec time: [0.0] s Known issues ------------ Here are the changes found in IGTPW_8235 that come from known issues: ### IGT changes ### #### Issues hit #### * {igt@i915_hwmon@hwmon-read} (NEW): - fi-elk-e7500: NOTRUN -> [SKIP][7] ([fdo#109271]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-elk-e7500/igt@i915_hwmon@hwmon-read.html - fi-bsw-kefka: NOTRUN -> [SKIP][8] ([fdo#109271]) +1 similar issue [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-bsw-kefka/igt@i915_hwmon@hwmon-read.html - fi-cfl-guc: NOTRUN -> [SKIP][9] ([fdo#109271]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-cfl-guc/igt@i915_hwmon@hwmon-read.html - fi-hsw-4770: NOTRUN -> [SKIP][10] ([fdo#109271]) +1 similar issue [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-hsw-4770/igt@i915_hwmon@hwmon-read.html - fi-ivb-3770: NOTRUN -> [SKIP][11] ([fdo#109271]) +1 similar issue [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-ivb-3770/igt@i915_hwmon@hwmon-read.html * {igt@i915_hwmon@hwmon-write} (NEW): - fi-bdw-gvtdvm: NOTRUN -> [SKIP][12] ([fdo#109271]) +1 similar issue [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-bdw-gvtdvm/igt@i915_hwmon@hwmon-write.html - fi-glk-j4005: NOTRUN -> [SKIP][13] ([fdo#109271]) +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-glk-j4005/igt@i915_hwmon@hwmon-write.html - fi-skl-guc: NOTRUN -> [SKIP][14] ([fdo#109271]) +1 similar issue [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-skl-guc/igt@i915_hwmon@hwmon-write.html - fi-skl-6700k2: NOTRUN -> [SKIP][15] ([fdo#109271]) +1 similar issue [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-skl-6700k2/igt@i915_hwmon@hwmon-write.html - fi-kbl-7567u: NOTRUN -> [SKIP][16] ([fdo#109271]) +1 similar issue [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-kbl-7567u/igt@i915_hwmon@hwmon-write.html - fi-kbl-8809g: NOTRUN -> [SKIP][17] ([fdo#109271]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-kbl-8809g/igt@i915_hwmon@hwmon-write.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-rkl-guc: NOTRUN -> [SKIP][18] ([fdo#111827]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-rkl-guc/igt@kms_chamelium@common-hpd-after-suspend.html * igt@kms_setmode@basic-clone-single-crtc: - fi-snb-2600: NOTRUN -> [SKIP][19] ([fdo#109271]) +2 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-snb-2600/igt@kms_setmode@basic-clone-single-crtc.html #### Possible fixes #### * igt@i915_selftest@live@workarounds: - fi-rkl-guc: [INCOMPLETE][20] ([i915#4983]) -> [PASS][21] [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/fi-rkl-guc/igt@i915_selftest@live@workarounds.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/fi-rkl-guc/igt@i915_selftest@live@workarounds.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 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7094 -> IGTPW_8235 CI-20190529: 20190529 CI_DRM_12506: d58c07107cf979eebf3538b0b1b0539b345c66a1 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8235: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html IGT_7094: 1763071e9d50c5e992257c9197cb26f166de6fae @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- +igt@i915_hwmon@hwmon-read +igt@i915_hwmon@hwmon-write == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html [-- Attachment #2: Type: text/html, Size: 8107 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for i915/i915_hwmon: General verification of hwmon attributes (rev5) 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit ` (3 preceding siblings ...) 2022-12-15 3:08 ` [igt-dev] ✓ Fi.CI.BAT: success for i915/i915_hwmon: General verification of hwmon attributes (rev5) Patchwork @ 2022-12-16 10:43 ` Patchwork 4 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2022-12-16 10:43 UTC (permalink / raw) To: Dixit, Ashutosh; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 36028 bytes --] == Series Details == Series: i915/i915_hwmon: General verification of hwmon attributes (rev5) URL : https://patchwork.freedesktop.org/series/111833/ State : success == Summary == CI Bug Log - changes from CI_DRM_12506_full -> IGTPW_8235_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html Participating hosts (14 -> 6) ------------------------------ Missing (8): pig-kbl-iris shard-tglu shard-tglu-10 shard-tglu-9 pig-glk-j5005 pig-skl-6260u shard-rkl shard-dg1 Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_8235_full: ### IGT changes ### #### Possible regressions #### * {igt@i915_hwmon@hwmon-read} (NEW): - shard-tglb: NOTRUN -> [SKIP][1] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@i915_hwmon@hwmon-read.html - shard-iclb: NOTRUN -> [SKIP][2] [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb5/igt@i915_hwmon@hwmon-read.html New tests --------- New tests have been introduced between CI_DRM_12506_full and IGTPW_8235_full: ### New IGT tests (2) ### * igt@i915_hwmon@hwmon-read: - Statuses : 4 skip(s) - Exec time: [0.0] s * igt@i915_hwmon@hwmon-write: - Statuses : - Exec time: [None] s Known issues ------------ Here are the changes found in IGTPW_8235_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_param@set-priority-not-supported: - shard-tglb: NOTRUN -> [SKIP][3] ([fdo#109314]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@gem_ctx_param@set-priority-not-supported.html - shard-iclb: NOTRUN -> [SKIP][4] ([fdo#109314]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb7/igt@gem_ctx_param@set-priority-not-supported.html * igt@gem_ctx_persistence@process: - shard-snb: NOTRUN -> [SKIP][5] ([fdo#109271] / [i915#1099]) +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-snb4/igt@gem_ctx_persistence@process.html * igt@gem_eio@unwedge-stress: - shard-snb: NOTRUN -> [FAIL][6] ([i915#3354]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-snb5/igt@gem_eio@unwedge-stress.html * igt@gem_exec_balancer@parallel-keep-in-fence: - shard-iclb: [PASS][7] -> [SKIP][8] ([i915#4525]) +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb2/igt@gem_exec_balancer@parallel-keep-in-fence.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb6/igt@gem_exec_balancer@parallel-keep-in-fence.html * igt@gem_exec_balancer@parallel-ordering: - shard-tglb: NOTRUN -> [FAIL][9] ([i915#6117]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@gem_exec_balancer@parallel-ordering.html * igt@gem_exec_fair@basic-none@vcs1: - shard-iclb: NOTRUN -> [FAIL][10] ([i915#2842]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@gem_exec_fair@basic-none@vcs1.html * igt@gem_exec_fair@basic-pace-solo@rcs0: - shard-iclb: [PASS][11] -> [FAIL][12] ([i915#2842]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb1/igt@gem_exec_fair@basic-pace-solo@rcs0.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@gem_exec_fair@basic-pace-solo@rcs0.html * igt@gem_huc_copy@huc-copy: - shard-tglb: [PASS][13] -> [SKIP][14] ([i915#2190]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-tglb1/igt@gem_huc_copy@huc-copy.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@massive: - shard-iclb: NOTRUN -> [SKIP][15] ([i915#4613]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@gem_lmem_swapping@massive.html - shard-apl: NOTRUN -> [SKIP][16] ([fdo#109271] / [i915#4613]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl6/igt@gem_lmem_swapping@massive.html - shard-tglb: NOTRUN -> [SKIP][17] ([i915#4613]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@gem_lmem_swapping@massive.html * igt@gem_media_vme: - shard-tglb: NOTRUN -> [SKIP][18] ([i915#284]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@gem_media_vme.html * igt@gem_pxp@verify-pxp-stale-buf-optout-execution: - shard-iclb: NOTRUN -> [SKIP][19] ([i915#4270]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html - shard-tglb: NOTRUN -> [SKIP][20] ([i915#4270]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html * igt@gem_render_copy@yf-tiled-to-vebox-x-tiled: - shard-iclb: NOTRUN -> [SKIP][21] ([i915#768]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@gem_render_copy@yf-tiled-to-vebox-x-tiled.html * igt@gem_softpin@evict-single-offset: - shard-apl: NOTRUN -> [FAIL][22] ([i915#4171]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl6/igt@gem_softpin@evict-single-offset.html * igt@gem_userptr_blits@create-destroy-unsync: - shard-tglb: NOTRUN -> [SKIP][23] ([i915#3297]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@gem_userptr_blits@create-destroy-unsync.html - shard-iclb: NOTRUN -> [SKIP][24] ([i915#3297]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@gem_userptr_blits@create-destroy-unsync.html * igt@gem_vm_create@invalid-create: - shard-snb: NOTRUN -> [SKIP][25] ([fdo#109271]) +153 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-snb7/igt@gem_vm_create@invalid-create.html * igt@gen3_render_linear_blits: - shard-iclb: NOTRUN -> [SKIP][26] ([fdo#109289]) +1 similar issue [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@gen3_render_linear_blits.html * igt@gen7_exec_parse@basic-rejected: - shard-tglb: NOTRUN -> [SKIP][27] ([fdo#109289]) +1 similar issue [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb5/igt@gen7_exec_parse@basic-rejected.html * igt@gen9_exec_parse@basic-rejected: - shard-tglb: NOTRUN -> [SKIP][28] ([i915#2527] / [i915#2856]) +1 similar issue [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@gen9_exec_parse@basic-rejected.html * igt@gen9_exec_parse@batch-invalid-length: - shard-iclb: NOTRUN -> [SKIP][29] ([i915#2856]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb5/igt@gen9_exec_parse@batch-invalid-length.html * igt@i915_pm_dc@dc9-dpms: - shard-tglb: NOTRUN -> [SKIP][30] ([i915#4281]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@i915_pm_dc@dc9-dpms.html * igt@i915_pm_rc6_residency@rc6-idle@rcs0: - shard-tglb: NOTRUN -> [WARN][31] ([i915#2681]) +3 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb5/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html * igt@i915_pm_rc6_residency@rc6-idle@vcs0: - shard-iclb: NOTRUN -> [WARN][32] ([i915#2684]) +3 similar issues [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@i915_pm_rc6_residency@rc6-idle@vcs0.html * igt@i915_pm_rpm@pc8-residency: - shard-iclb: NOTRUN -> [SKIP][33] ([fdo#109293] / [fdo#109506]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb6/igt@i915_pm_rpm@pc8-residency.html - shard-tglb: NOTRUN -> [SKIP][34] ([fdo#109506] / [i915#2411]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@i915_pm_rpm@pc8-residency.html * igt@i915_pm_sseu@full-enable: - shard-tglb: NOTRUN -> [SKIP][35] ([i915#4387]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb5/igt@i915_pm_sseu@full-enable.html * igt@i915_query@test-query-geometry-subslices: - shard-iclb: NOTRUN -> [SKIP][36] ([i915#5723]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@i915_query@test-query-geometry-subslices.html - shard-tglb: NOTRUN -> [SKIP][37] ([i915#5723]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@i915_query@test-query-geometry-subslices.html * igt@i915_suspend@sysfs-reader: - shard-apl: [PASS][38] -> [DMESG-WARN][39] ([i915#180]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl6/igt@i915_suspend@sysfs-reader.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@i915_suspend@sysfs-reader.html * igt@kms_atomic@plane-primary-overlay-mutable-zpos: - shard-iclb: NOTRUN -> [SKIP][40] ([i915#404]) [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html - shard-tglb: NOTRUN -> [SKIP][41] ([i915#404]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip: - shard-iclb: NOTRUN -> [SKIP][42] ([i915#5286]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html - shard-tglb: NOTRUN -> [SKIP][43] ([i915#5286]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html * igt@kms_big_fb@x-tiled-32bpp-rotate-90: - shard-tglb: NOTRUN -> [SKIP][44] ([fdo#111614]) +1 similar issue [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html - shard-iclb: NOTRUN -> [SKIP][45] ([fdo#110725] / [fdo#111614]) +1 similar issue [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb8/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0: - shard-tglb: NOTRUN -> [SKIP][46] ([fdo#111615]) +1 similar issue [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_joiner@invalid-modeset: - shard-tglb: NOTRUN -> [SKIP][47] ([i915#2705]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_big_joiner@invalid-modeset.html - shard-iclb: NOTRUN -> [SKIP][48] ([i915#2705]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb7/igt@kms_big_joiner@invalid-modeset.html * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs: - shard-iclb: NOTRUN -> [SKIP][49] ([fdo#109278] / [i915#3886]) +2 similar issues [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-a-ccs-on-another-bo-y_tiled_gen12_mc_ccs: - shard-apl: NOTRUN -> [SKIP][50] ([fdo#109271] / [i915#3886]) +2 similar issues [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@kms_ccs@pipe-a-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html - shard-tglb: NOTRUN -> [SKIP][51] ([i915#3689] / [i915#3886]) +1 similar issue [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_ccs@pipe-a-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-a-crc-primary-basic-yf_tiled_ccs: - shard-tglb: NOTRUN -> [SKIP][52] ([fdo#111615] / [i915#3689]) +2 similar issues [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_ccs@pipe-a-crc-primary-basic-yf_tiled_ccs.html * igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_dg2_rc_ccs: - shard-tglb: NOTRUN -> [SKIP][53] ([i915#3689] / [i915#6095]) +2 similar issues [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_dg2_rc_ccs.html * igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc: - shard-tglb: NOTRUN -> [SKIP][54] ([i915#6095]) +1 similar issue [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_dg2_rc_ccs_cc.html * igt@kms_ccs@pipe-d-bad-aux-stride-y_tiled_gen12_mc_ccs: - shard-tglb: NOTRUN -> [SKIP][55] ([i915#3689]) +1 similar issue [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@kms_ccs@pipe-d-bad-aux-stride-y_tiled_gen12_mc_ccs.html * igt@kms_cdclk@mode-transition: - shard-iclb: NOTRUN -> [SKIP][56] ([i915#3742]) [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@kms_cdclk@mode-transition.html - shard-tglb: NOTRUN -> [SKIP][57] ([i915#3742]) [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_cdclk@mode-transition.html * igt@kms_chamelium@hdmi-edid-stress-resolution-4k: - shard-tglb: NOTRUN -> [SKIP][58] ([fdo#109284] / [fdo#111827]) +3 similar issues [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_chamelium@hdmi-edid-stress-resolution-4k.html * igt@kms_chamelium@hdmi-hpd: - shard-iclb: NOTRUN -> [SKIP][59] ([fdo#109284] / [fdo#111827]) +2 similar issues [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@kms_chamelium@hdmi-hpd.html - shard-apl: NOTRUN -> [SKIP][60] ([fdo#109271] / [fdo#111827]) +2 similar issues [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl3/igt@kms_chamelium@hdmi-hpd.html * igt@kms_chamelium@vga-hpd-with-enabled-mode: - shard-snb: NOTRUN -> [SKIP][61] ([fdo#109271] / [fdo#111827]) +5 similar issues [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-snb7/igt@kms_chamelium@vga-hpd-with-enabled-mode.html * igt@kms_color@deep-color: - shard-iclb: NOTRUN -> [SKIP][62] ([i915#3555]) +2 similar issues [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb7/igt@kms_color@deep-color.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-tglb: NOTRUN -> [SKIP][63] ([i915#3116] / [i915#3299]) [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@kms_content_protection@dp-mst-lic-type-0.html - shard-iclb: NOTRUN -> [SKIP][64] ([i915#3116]) [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb8/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic: - shard-tglb: NOTRUN -> [SKIP][65] ([fdo#109274] / [fdo#111825]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html * igt@kms_dsc@dsc-with-bpc-formats: - shard-iclb: NOTRUN -> [SKIP][66] ([i915#3840]) [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@kms_dsc@dsc-with-bpc-formats.html - shard-apl: NOTRUN -> [SKIP][67] ([fdo#109271] / [i915#7205]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@kms_dsc@dsc-with-bpc-formats.html * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible: - shard-iclb: NOTRUN -> [SKIP][68] ([fdo#109274]) +2 similar issues [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb5/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible: - shard-tglb: NOTRUN -> [SKIP][69] ([fdo#109274] / [fdo#111825] / [i915#3637]) +3 similar issues [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode: - shard-iclb: NOTRUN -> [SKIP][70] ([i915#6375]) [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode: - shard-tglb: NOTRUN -> [SKIP][71] ([i915#2587] / [i915#2672]) [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode: - shard-iclb: NOTRUN -> [SKIP][72] ([i915#2672]) +3 similar issues [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode: - shard-iclb: NOTRUN -> [SKIP][73] ([i915#2587] / [i915#2672]) +2 similar issues [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode: - shard-iclb: NOTRUN -> [SKIP][74] ([i915#2672] / [i915#3555]) [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt: - shard-tglb: NOTRUN -> [SKIP][75] ([i915#6497]) +5 similar issues [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt: - shard-iclb: NOTRUN -> [SKIP][76] ([fdo#109280]) +13 similar issues [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc: - shard-tglb: NOTRUN -> [SKIP][77] ([fdo#109280] / [fdo#111825]) +15 similar issues [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc.html * igt@kms_hdmi_inject@inject-audio: - shard-tglb: [PASS][78] -> [SKIP][79] ([i915#433]) [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-tglb5/igt@kms_hdmi_inject@inject-audio.html [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_hdmi_inject@inject-audio.html * igt@kms_hdr@bpc-switch-dpms: - shard-tglb: NOTRUN -> [SKIP][80] ([i915#3555]) +3 similar issues [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_hdr@bpc-switch-dpms.html * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1: - shard-iclb: [PASS][81] -> [SKIP][82] ([i915#5176]) +1 similar issue [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb5/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-b-edp-1: - shard-iclb: NOTRUN -> [SKIP][83] ([i915#5235]) +2 similar issues [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-b-edp-1.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-d-edp-1: - shard-tglb: NOTRUN -> [SKIP][84] ([i915#5235]) +3 similar issues [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-d-edp-1.html * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1: - shard-iclb: [PASS][85] -> [SKIP][86] ([i915#5235]) +2 similar issues [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1.html [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-iclb: NOTRUN -> [SKIP][87] ([fdo#109642] / [fdo#111068] / [i915#658]) [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb5/igt@kms_psr2_su@frontbuffer-xrgb8888.html - shard-apl: NOTRUN -> [SKIP][88] ([fdo#109271] / [i915#658]) [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl3/igt@kms_psr2_su@frontbuffer-xrgb8888.html - shard-tglb: NOTRUN -> [SKIP][89] ([i915#7037]) [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb5/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@psr2_sprite_blt: - shard-iclb: NOTRUN -> [SKIP][90] ([fdo#109441]) +1 similar issue [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb5/igt@kms_psr@psr2_sprite_blt.html * igt@kms_psr@psr2_sprite_mmap_cpu: - shard-iclb: [PASS][91] -> [SKIP][92] ([fdo#109441]) +4 similar issues [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_cpu.html [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb6/igt@kms_psr@psr2_sprite_mmap_cpu.html * igt@kms_psr@psr2_sprite_plane_onoff: - shard-apl: NOTRUN -> [SKIP][93] ([fdo#109271]) +72 similar issues [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@kms_psr@psr2_sprite_plane_onoff.html - shard-tglb: NOTRUN -> [FAIL][94] ([i915#132] / [i915#3467]) +2 similar issues [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb2/igt@kms_psr@psr2_sprite_plane_onoff.html * igt@kms_vblank@pipe-b-wait-idle-hang: - shard-snb: [PASS][95] -> [SKIP][96] ([fdo#109271]) [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-snb4/igt@kms_vblank@pipe-b-wait-idle-hang.html [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-snb4/igt@kms_vblank@pipe-b-wait-idle-hang.html * igt@kms_vblank@pipe-d-wait-idle: - shard-iclb: NOTRUN -> [SKIP][97] ([fdo#109278]) +5 similar issues [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@kms_vblank@pipe-d-wait-idle.html - shard-apl: NOTRUN -> [SKIP][98] ([fdo#109271] / [i915#533]) [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@kms_vblank@pipe-d-wait-idle.html * igt@prime_vgem@basic-userptr: - shard-tglb: NOTRUN -> [SKIP][99] ([fdo#109295] / [i915#3301]) [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@prime_vgem@basic-userptr.html - shard-iclb: NOTRUN -> [SKIP][100] ([fdo#109295] / [i915#3301]) [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@prime_vgem@basic-userptr.html * igt@v3d/v3d_create_bo@create-bo-4096: - shard-iclb: NOTRUN -> [SKIP][101] ([fdo#109315]) +1 similar issue [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@v3d/v3d_create_bo@create-bo-4096.html * igt@v3d/v3d_perfmon@get-values-invalid-pointer: - shard-tglb: NOTRUN -> [SKIP][102] ([fdo#109315] / [i915#2575]) +2 similar issues [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@v3d/v3d_perfmon@get-values-invalid-pointer.html #### Possible fixes #### * igt@gem_exec_balancer@parallel-contexts: - shard-iclb: [SKIP][103] ([i915#4525]) -> [PASS][104] [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb3/igt@gem_exec_balancer@parallel-contexts.html [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb1/igt@gem_exec_balancer@parallel-contexts.html * igt@gem_exec_fair@basic-flow@rcs0: - shard-tglb: [FAIL][105] ([i915#2842]) -> [PASS][106] [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-tglb6/igt@gem_exec_fair@basic-flow@rcs0.html [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@gem_exec_fair@basic-flow@rcs0.html * igt@gen9_exec_parse@allowed-single: - shard-apl: [DMESG-WARN][107] ([i915#5566] / [i915#716]) -> [PASS][108] [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl8/igt@gen9_exec_parse@allowed-single.html [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl6/igt@gen9_exec_parse@allowed-single.html * igt@i915_pm_dc@dc9-dpms: - shard-apl: [SKIP][109] ([fdo#109271]) -> [PASS][110] [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl6/igt@i915_pm_dc@dc9-dpms.html [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl6/igt@i915_pm_dc@dc9-dpms.html * igt@i915_selftest@live@hangcheck: - shard-tglb: [DMESG-WARN][111] ([i915#5591]) -> [PASS][112] [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-tglb5/igt@i915_selftest@live@hangcheck.html [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb1/igt@i915_selftest@live@hangcheck.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode: - shard-iclb: [SKIP][113] ([i915#3555]) -> [PASS][114] [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode.html [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-default-mode.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1: - shard-iclb: [SKIP][115] ([i915#5235]) -> [PASS][116] +2 similar issues [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html * igt@kms_psr@psr2_cursor_blt: - shard-iclb: [SKIP][117] ([fdo#109441]) -> [PASS][118] +1 similar issue [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb6/igt@kms_psr@psr2_cursor_blt.html [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_psr@psr2_cursor_blt.html #### Warnings #### * igt@gem_exec_fair@basic-none-share@rcs0: - shard-tglb: [SKIP][119] ([i915#2848]) -> [FAIL][120] ([i915#2842]) [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-tglb6/igt@gem_exec_fair@basic-none-share@rcs0.html [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-tglb7/igt@gem_exec_fair@basic-none-share@rcs0.html * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-dp-1: - shard-apl: [FAIL][121] ([i915#4573]) -> [DMESG-FAIL][122] ([IGT#6]) +1 similar issue [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl6/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-dp-1.html [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl3/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-dp-1.html * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf: - shard-iclb: [SKIP][123] ([i915#2920]) -> [SKIP][124] ([i915#658]) [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb2/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb6/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html * igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf: - shard-iclb: [SKIP][125] ([i915#658]) -> [SKIP][126] ([i915#2920]) +1 similar issue [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-iclb3/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-iclb2/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html * igt@runner@aborted: - shard-apl: ([FAIL][127], [FAIL][128], [FAIL][129]) ([fdo#109271] / [i915#3002] / [i915#4312]) -> ([FAIL][130], [FAIL][131], [FAIL][132]) ([i915#180] / [i915#3002] / [i915#4312]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl8/igt@runner@aborted.html [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl3/igt@runner@aborted.html [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12506/shard-apl2/igt@runner@aborted.html [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl8/igt@runner@aborted.html [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl6/igt@runner@aborted.html [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/shard-apl3/igt@runner@aborted.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [IGT#6]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/6 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293 [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295 [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110725]: https://bugs.freedesktop.org/show_bug.cgi?id=110725 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099 [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681 [i915#2684]: https://gitlab.freedesktop.org/drm/intel/issues/2684 [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705 [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#2848]: https://gitlab.freedesktop.org/drm/intel/issues/2848 [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856 [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920 [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002 [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299 [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301 [i915#3354]: https://gitlab.freedesktop.org/drm/intel/issues/3354 [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404 [i915#4171]: https://gitlab.freedesktop.org/drm/intel/issues/4171 [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281 [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312 [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433 [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387 [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525 [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566 [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591 [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117 [i915#6375]: https://gitlab.freedesktop.org/drm/intel/issues/6375 [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037 [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716 [i915#7205]: https://gitlab.freedesktop.org/drm/intel/issues/7205 [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768 [i915#7688]: https://gitlab.freedesktop.org/drm/intel/issues/7688 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7094 -> IGTPW_8235 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_12506: d58c07107cf979eebf3538b0b1b0539b345c66a1 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8235: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html IGT_7094: 1763071e9d50c5e992257c9197cb26f166de6fae @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8235/index.html [-- Attachment #2: Type: text/html, Size: 44385 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes
@ 2022-12-14 3:09 Ashutosh Dixit
2022-12-14 3:09 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit
0 siblings, 1 reply; 13+ messages in thread
From: Ashutosh Dixit @ 2022-12-14 3:09 UTC (permalink / raw)
To: igt-dev; +Cc: Badal Nilawar
Ensure we can read all hwmon attributes. For writable attributes, also
ensure the read value approximately matches the written value, taking the
clamping of writes into account.
v2: Added new patch "lib/igt_sysfs: Make it easier to extend verification
of clamped sysfs attr". No changes to previous patches.
v3: Identical to v2, failed to copy reviewers
v4: Drop the concept of a 'clamped' sysfs attribute, it is not
necessary. All we need is a writable attribute for which the read
values will match the written values for a few points across the range
of all possible values.
Ashutosh Dixit (3):
lib/igt_sysfs: Generic verification of writable sysfs attributes
i915/i915_hwmon: General verification of hwmon attributes
HAX: Add i915_hwmon* to fast-feedback.testlist
lib/igt_sysfs.c | 119 ++++++++++++++++++++++++++
lib/igt_sysfs.h | 21 +++++
tests/i915/i915_hwmon.c | 88 +++++++++++++++++++
tests/intel-ci/fast-feedback.testlist | 2 +
tests/meson.build | 1 +
5 files changed, 231 insertions(+)
create mode 100644 tests/i915/i915_hwmon.c
--
2.38.0
^ permalink raw reply [flat|nested] 13+ messages in thread* [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-14 3:09 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit @ 2022-12-14 3:09 ` Ashutosh Dixit 2022-12-14 6:51 ` Tauro, Riana 0 siblings, 1 reply; 13+ messages in thread From: Ashutosh Dixit @ 2022-12-14 3:09 UTC (permalink / raw) To: igt-dev; +Cc: Badal Nilawar Attempt to verify writable sysfs attributes in a generic way, without going into the specifics of any attribute. The attribute is first written to and then read back and it is verified that the read value matches the written value to a tolerance. However, when we try to do this we run into the issue that a sysfs attribute might have a behavior where the read value is different from the written value for any reason. For example, attributes such as power, voltage, frequency and time typically have a linear region outside which they are clamped (the values saturate). Therefore for such attributes read values match the written value only in the linear region and when writing we don't know if we are writing to the linear or to the clamped region. Therefore the verification implemented here takes the approach of sweeping across the range of possible values of the attribute (this is done using 'doubling' rather than linearly) and seeing where there are matches. There should be at least one match for the verification to have succeeded. Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> --- lib/igt_sysfs.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/igt_sysfs.h | 21 +++++++++ 2 files changed, 140 insertions(+) diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c index a913be4c8f2..c6cccf6fa1e 100644 --- a/lib/igt_sysfs.c +++ b/lib/igt_sysfs.c @@ -784,3 +784,122 @@ void fbcon_blink_enable(bool enable) write(fd, buffer, r + 1); close(fd); } + +struct rw_attr_internal { + /* we need an uint64_t array of max 64 points */ + uint64_t points[64]; + int num_points; +}; + +static bool rw_attr_equal_within_epsilon(uint64_t x, uint64_t ref, double tol) +{ + return (x <= (1.0 + tol) * ref) && (x >= (1.0 - tol) * ref); +} + +/* Sweep the range of values for an attribute to identify matching reads/writes */ +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) +{ + struct rw_attr_internal *pts = rw->rsvd; + uint64_t get, set = rw->start; + bool ret; + + igt_debug("'%s': sweeping range of values\n", rw->attr); + while (1) { + if (set >= UINT64_MAX / 2) { + igt_debug("'%s': done sweeping\n", rw->attr); + break; + } + + ret = igt_sysfs_set_u64(rw->dir, rw->attr, set); + get = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_debug("'%s': ret %d set %lu get %lu\n", rw->attr, ret, set, get); + if (ret && rw_attr_equal_within_epsilon(get, set, rw->tol)) { + pts->points[pts->num_points++] = set; + igt_debug("'%s': include %lu\n", rw->attr, set); + } + + set *= 2; + } + + return pts->num_points ? 0 : -ENOENT; +} + +/* Re-verify that reads following writes are equal within a tolerance */ +static int rw_attr_reverify_points(igt_sysfs_rw_attr_t *rw) +{ + struct rw_attr_internal *pts = rw->rsvd; + uint64_t get, set; + int i; + + igt_debug("'%s': reverifying\n", rw->attr); + for (i = pts->num_points - 1; i >= 0; i--) { + set = pts->points[i]; + if (!igt_sysfs_set_u64(rw->dir, rw->attr, set)) { + igt_debug("'%s': set %lu failed\n", rw->attr, set); + return -EIO; + } + get = igt_sysfs_get_u64(rw->dir, rw->attr); + if (!rw_attr_equal_within_epsilon(get, set, rw->tol)) { + igt_debug("'%s': mismatch set %lu get %lu\n", rw->attr, set, get); + return -EIO; + } + } + igt_debug("'%s': done reverifying\n", rw->attr); + + return 0; +} + +/** + * igt_sysfs_rw_attr_verify: + * @rw: 'struct igt_sysfs_rw_attr' describing a rw sysfs attr + * + * This function attempts to verify writable sysfs attributes, that is the + * attribute is first written to and then read back and it is verified that + * the read value matches the written value to a tolerance. However, when + * we try to do this we run into the issue that a sysfs attribute might + * have a behavior where the read value is different from the written value + * for any reason. For example, attributes such as power, voltage, + * frequency and time typically have a linear region outside which they are + * clamped (the values saturate). Therefore for such attributes read values + * match the written value only in the linear region and when writing we + * don't know if we are writing to the linear or to the clamped region. + * + * Therefore the verification implemented here takes the approach of + * sweeping across the range of possible values of the attribute (this is + * done using 'doubling' rather than linearly) and seeing where there are + * matches. There should be at least one match (to a tolerance) for the + * verification to have succeeded. + */ +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw) +{ + uint64_t prev, get; + struct stat st; + int ret; + + igt_assert(!fstatat(rw->dir, rw->attr, &st, 0)); + igt_assert(st.st_mode & 0222); /* writable */ + igt_assert(rw->start); /* cannot be 0 */ + + prev = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_debug("'%s': prev %lu\n", rw->attr, prev); + + rw->rsvd = calloc(1, sizeof(struct rw_attr_internal)); + igt_assert(rw->rsvd); + + ret = rw_attr_sweep(rw); + if (ret) + goto restore; + + ret = rw_attr_reverify_points(rw); + + /* + * Restore previous value: we don't assert before this point so + * that we can restore the attr before asserting + */ +restore: + free(rw->rsvd); + igt_assert_eq(1, igt_sysfs_set_u64(rw->dir, rw->attr, prev)); + get = igt_sysfs_get_u64(rw->dir, rw->attr); + igt_assert_eq(get, prev); + igt_assert(!ret); +} diff --git a/lib/igt_sysfs.h b/lib/igt_sysfs.h index 1c9791a1bdc..418c800e8c5 100644 --- a/lib/igt_sysfs.h +++ b/lib/igt_sysfs.h @@ -125,4 +125,25 @@ void bind_fbcon(bool enable); void kick_snd_hda_intel(void); void fbcon_blink_enable(bool enable); +/** + * igt_sysfs_rw_attr: + * @dir: file descriptor for parent directory + * @attr: name of sysfs attribute + * @start: start value for searching for matching reads/writes + * @tol: tolerance to use to compare written and read values + * @rsvd: reserved field used internally + * + * Structure used to describe the rw sysfs attribute to + * igt_sysfs_rw_attr_verify + */ +typedef struct igt_sysfs_rw_attr { + int dir; + char *attr; + uint64_t start; + double tol; + void *rsvd; +} igt_sysfs_rw_attr_t; + +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw); + #endif /* __IGT_SYSFS_H__ */ -- 2.38.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-14 3:09 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit @ 2022-12-14 6:51 ` Tauro, Riana 2022-12-14 16:37 ` Dixit, Ashutosh 0 siblings, 1 reply; 13+ messages in thread From: Tauro, Riana @ 2022-12-14 6:51 UTC (permalink / raw) To: Ashutosh Dixit, igt-dev, Badal Nilawar Hi Ashutosh On 12/14/2022 8:39 AM, Ashutosh Dixit wrote: > Attempt to verify writable sysfs attributes in a generic way, without going > into the specifics of any attribute. The attribute is first written to and > then read back and it is verified that the read value matches the written > value to a tolerance. However, when we try to do this we run into the issue > that a sysfs attribute might have a behavior where the read value is > different from the written value for any reason. For example, attributes > such as power, voltage, frequency and time typically have a linear region > outside which they are clamped (the values saturate). Therefore for such > attributes read values match the written value only in the linear region > and when writing we don't know if we are writing to the linear or to the > clamped region. > > Therefore the verification implemented here takes the approach of sweeping > across the range of possible values of the attribute (this is done using > 'doubling' rather than linearly) and seeing where there are matches. There > should be at least one match for the verification to have succeeded. > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> > --- > lib/igt_sysfs.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ > lib/igt_sysfs.h | 21 +++++++++ > 2 files changed, 140 insertions(+) > > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c > index a913be4c8f2..c6cccf6fa1e 100644 > --- a/lib/igt_sysfs.c > +++ b/lib/igt_sysfs.c > @@ -784,3 +784,122 @@ void fbcon_blink_enable(bool enable) > write(fd, buffer, r + 1); > close(fd); > } > + > +struct rw_attr_internal { > + /* we need an uint64_t array of max 64 points */ > + uint64_t points[64]; > + int num_points; > +}; > + > +static bool rw_attr_equal_within_epsilon(uint64_t x, uint64_t ref, double tol) > +{ > + return (x <= (1.0 + tol) * ref) && (x >= (1.0 - tol) * ref); > +} > + > +/* Sweep the range of values for an attribute to identify matching reads/writes */ > +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) > +{ > + struct rw_attr_internal *pts = rw->rsvd; > + uint64_t get, set = rw->start; > + bool ret; > + > + igt_debug("'%s': sweeping range of values\n", rw->attr); > + while (1) { Can this be replaced with while(set < UINT64_MAX / 2)? > + if (set >= UINT64_MAX / 2) { > + igt_debug("'%s': done sweeping\n", rw->attr); > + break; > + } If ret is 0 and num_of_points is > 0 does the loop have to continue? Can we break since we have reached the clamped max? Thanks Riana > + > + ret = igt_sysfs_set_u64(rw->dir, rw->attr, set); > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_debug("'%s': ret %d set %lu get %lu\n", rw->attr, ret, set, get); > + if (ret && rw_attr_equal_within_epsilon(get, set, rw->tol)) { > + pts->points[pts->num_points++] = set; > + igt_debug("'%s': include %lu\n", rw->attr, set); > + } > + > + set *= 2; > + } > + > + return pts->num_points ? 0 : -ENOENT; > +} > + > +/* Re-verify that reads following writes are equal within a tolerance */ > +static int rw_attr_reverify_points(igt_sysfs_rw_attr_t *rw) > +{ > + struct rw_attr_internal *pts = rw->rsvd; > + uint64_t get, set; > + int i; > + > + igt_debug("'%s': reverifying\n", rw->attr); > + for (i = pts->num_points - 1; i >= 0; i--) { > + set = pts->points[i]; > + if (!igt_sysfs_set_u64(rw->dir, rw->attr, set)) { > + igt_debug("'%s': set %lu failed\n", rw->attr, set); > + return -EIO; > + } > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > + if (!rw_attr_equal_within_epsilon(get, set, rw->tol)) { > + igt_debug("'%s': mismatch set %lu get %lu\n", rw->attr, set, get); > + return -EIO; > + } > + } > + igt_debug("'%s': done reverifying\n", rw->attr); > + > + return 0; > +} > + > +/** > + * igt_sysfs_rw_attr_verify: > + * @rw: 'struct igt_sysfs_rw_attr' describing a rw sysfs attr > + * > + * This function attempts to verify writable sysfs attributes, that is the > + * attribute is first written to and then read back and it is verified that > + * the read value matches the written value to a tolerance. However, when > + * we try to do this we run into the issue that a sysfs attribute might > + * have a behavior where the read value is different from the written value > + * for any reason. For example, attributes such as power, voltage, > + * frequency and time typically have a linear region outside which they are > + * clamped (the values saturate). Therefore for such attributes read values > + * match the written value only in the linear region and when writing we > + * don't know if we are writing to the linear or to the clamped region. > + * > + * Therefore the verification implemented here takes the approach of > + * sweeping across the range of possible values of the attribute (this is > + * done using 'doubling' rather than linearly) and seeing where there are > + * matches. There should be at least one match (to a tolerance) for the > + * verification to have succeeded. > + */ > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw) > +{ > + uint64_t prev, get; > + struct stat st; > + int ret; > + > + igt_assert(!fstatat(rw->dir, rw->attr, &st, 0)); > + igt_assert(st.st_mode & 0222); /* writable */ > + igt_assert(rw->start); /* cannot be 0 */ > + > + prev = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_debug("'%s': prev %lu\n", rw->attr, prev); > + > + rw->rsvd = calloc(1, sizeof(struct rw_attr_internal)); > + igt_assert(rw->rsvd); > + > + ret = rw_attr_sweep(rw); > + if (ret) > + goto restore; > + > + ret = rw_attr_reverify_points(rw); > + > + /* > + * Restore previous value: we don't assert before this point so > + * that we can restore the attr before asserting > + */ > +restore: > + free(rw->rsvd); > + igt_assert_eq(1, igt_sysfs_set_u64(rw->dir, rw->attr, prev)); > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > + igt_assert_eq(get, prev); > + igt_assert(!ret); > +} > diff --git a/lib/igt_sysfs.h b/lib/igt_sysfs.h > index 1c9791a1bdc..418c800e8c5 100644 > --- a/lib/igt_sysfs.h > +++ b/lib/igt_sysfs.h > @@ -125,4 +125,25 @@ void bind_fbcon(bool enable); > void kick_snd_hda_intel(void); > void fbcon_blink_enable(bool enable); > > +/** > + * igt_sysfs_rw_attr: > + * @dir: file descriptor for parent directory > + * @attr: name of sysfs attribute > + * @start: start value for searching for matching reads/writes > + * @tol: tolerance to use to compare written and read values > + * @rsvd: reserved field used internally > + * > + * Structure used to describe the rw sysfs attribute to > + * igt_sysfs_rw_attr_verify > + */ > +typedef struct igt_sysfs_rw_attr { > + int dir; > + char *attr; > + uint64_t start; > + double tol; > + void *rsvd; > +} igt_sysfs_rw_attr_t; > + > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw); > + > #endif /* __IGT_SYSFS_H__ */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-14 6:51 ` Tauro, Riana @ 2022-12-14 16:37 ` Dixit, Ashutosh 2022-12-15 2:34 ` Dixit, Ashutosh 0 siblings, 1 reply; 13+ messages in thread From: Dixit, Ashutosh @ 2022-12-14 16:37 UTC (permalink / raw) To: Tauro, Riana; +Cc: igt-dev, Badal Nilawar On Tue, 13 Dec 2022 22:51:39 -0800, Tauro, Riana wrote: > > Hi Ashutosh Hi Riana, > On 12/14/2022 8:39 AM, Ashutosh Dixit wrote: > > Attempt to verify writable sysfs attributes in a generic way, without going > > into the specifics of any attribute. The attribute is first written to and > > then read back and it is verified that the read value matches the written > > value to a tolerance. However, when we try to do this we run into the issue > > that a sysfs attribute might have a behavior where the read value is > > different from the written value for any reason. For example, attributes > > such as power, voltage, frequency and time typically have a linear region > > outside which they are clamped (the values saturate). Therefore for such > > attributes read values match the written value only in the linear region > > and when writing we don't know if we are writing to the linear or to the > > clamped region. > > > > Therefore the verification implemented here takes the approach of sweeping > > across the range of possible values of the attribute (this is done using > > 'doubling' rather than linearly) and seeing where there are matches. There > > should be at least one match for the verification to have succeeded. > > > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> > > --- > > lib/igt_sysfs.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ > > lib/igt_sysfs.h | 21 +++++++++ > > 2 files changed, 140 insertions(+) > > > > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c > > index a913be4c8f2..c6cccf6fa1e 100644 > > --- a/lib/igt_sysfs.c > > +++ b/lib/igt_sysfs.c > > @@ -784,3 +784,122 @@ void fbcon_blink_enable(bool enable) > > write(fd, buffer, r + 1); > > close(fd); > > } > > + > > +struct rw_attr_internal { > > + /* we need an uint64_t array of max 64 points */ > > + uint64_t points[64]; > > + int num_points; > > +}; > > + > > +static bool rw_attr_equal_within_epsilon(uint64_t x, uint64_t ref, double tol) > > +{ > > + return (x <= (1.0 + tol) * ref) && (x >= (1.0 - tol) * ref); > > +} > > + > > +/* Sweep the range of values for an attribute to identify matching reads/writes */ > > +static int rw_attr_sweep(igt_sysfs_rw_attr_t *rw) > > +{ > > + struct rw_attr_internal *pts = rw->rsvd; > > + uint64_t get, set = rw->start; > > + bool ret; > > + > > + igt_debug("'%s': sweeping range of values\n", rw->attr); > > + while (1) { > Can this be replaced with while(set < UINT64_MAX / 2)? I think it is useful to run this with --debug and see the traces (to see the set and get values). So the debug message below (done sweeping) is convenient to see when the sweep finishes. So you are right but to retain the 'done sweeping' debug message I prefer to leave as is. > > + if (set >= UINT64_MAX / 2) { > > + igt_debug("'%s': done sweeping\n", rw->attr); > > + break; > > + } > If ret is 0 and num_of_points is > 0 does the loop have to continue? > Can we break since we have reached the clamped max? Yeah this is how it was in v1 - v3 of this series. But v4 has dropped the concept of clamping. So now basically for any sysfs attr we just write these values and read them back and if they are within epsilon we retain these points and run a reverification on them. So v4 is basically a generalization of clamping, there are now N points and out of those M "match", and it is no longer needed that the M points be in between clamped min and max. To retain clamping for these rw sysfs attributes was looking awkward. So because of the above reasons I think we should leave this too as is. Let me know what you think. Thanks. -- Ashutosh > > > + > > + ret = igt_sysfs_set_u64(rw->dir, rw->attr, set); > > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > > + igt_debug("'%s': ret %d set %lu get %lu\n", rw->attr, ret, set, get); > > + if (ret && rw_attr_equal_within_epsilon(get, set, rw->tol)) { > > + pts->points[pts->num_points++] = set; > > + igt_debug("'%s': include %lu\n", rw->attr, set); > > + } > > + > > + set *= 2; > > + } > > + > > + return pts->num_points ? 0 : -ENOENT; > > +} > > + > > +/* Re-verify that reads following writes are equal within a tolerance */ > > +static int rw_attr_reverify_points(igt_sysfs_rw_attr_t *rw) > > +{ > > + struct rw_attr_internal *pts = rw->rsvd; > > + uint64_t get, set; > > + int i; > > + > > + igt_debug("'%s': reverifying\n", rw->attr); > > + for (i = pts->num_points - 1; i >= 0; i--) { > > + set = pts->points[i]; > > + if (!igt_sysfs_set_u64(rw->dir, rw->attr, set)) { > > + igt_debug("'%s': set %lu failed\n", rw->attr, set); > > + return -EIO; > > + } > > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > > + if (!rw_attr_equal_within_epsilon(get, set, rw->tol)) { > > + igt_debug("'%s': mismatch set %lu get %lu\n", rw->attr, set, get); > > + return -EIO; > > + } > > + } > > + igt_debug("'%s': done reverifying\n", rw->attr); > > + > > + return 0; > > +} > > + > > +/** > > + * igt_sysfs_rw_attr_verify: > > + * @rw: 'struct igt_sysfs_rw_attr' describing a rw sysfs attr > > + * > > + * This function attempts to verify writable sysfs attributes, that is the > > + * attribute is first written to and then read back and it is verified that > > + * the read value matches the written value to a tolerance. However, when > > + * we try to do this we run into the issue that a sysfs attribute might > > + * have a behavior where the read value is different from the written value > > + * for any reason. For example, attributes such as power, voltage, > > + * frequency and time typically have a linear region outside which they are > > + * clamped (the values saturate). Therefore for such attributes read values > > + * match the written value only in the linear region and when writing we > > + * don't know if we are writing to the linear or to the clamped region. > > + * > > + * Therefore the verification implemented here takes the approach of > > + * sweeping across the range of possible values of the attribute (this is > > + * done using 'doubling' rather than linearly) and seeing where there are > > + * matches. There should be at least one match (to a tolerance) for the > > + * verification to have succeeded. > > + */ > > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw) > > +{ > > + uint64_t prev, get; > > + struct stat st; > > + int ret; > > + > > + igt_assert(!fstatat(rw->dir, rw->attr, &st, 0)); > > + igt_assert(st.st_mode & 0222); /* writable */ > > + igt_assert(rw->start); /* cannot be 0 */ > > + > > + prev = igt_sysfs_get_u64(rw->dir, rw->attr); > > + igt_debug("'%s': prev %lu\n", rw->attr, prev); > > + > > + rw->rsvd = calloc(1, sizeof(struct rw_attr_internal)); > > + igt_assert(rw->rsvd); > > + > > + ret = rw_attr_sweep(rw); > > + if (ret) > > + goto restore; > > + > > + ret = rw_attr_reverify_points(rw); > > + > > + /* > > + * Restore previous value: we don't assert before this point so > > + * that we can restore the attr before asserting > > + */ > > +restore: > > + free(rw->rsvd); > > + igt_assert_eq(1, igt_sysfs_set_u64(rw->dir, rw->attr, prev)); > > + get = igt_sysfs_get_u64(rw->dir, rw->attr); > > + igt_assert_eq(get, prev); > > + igt_assert(!ret); > > +} > > diff --git a/lib/igt_sysfs.h b/lib/igt_sysfs.h > > index 1c9791a1bdc..418c800e8c5 100644 > > --- a/lib/igt_sysfs.h > > +++ b/lib/igt_sysfs.h > > @@ -125,4 +125,25 @@ void bind_fbcon(bool enable); > > void kick_snd_hda_intel(void); > > void fbcon_blink_enable(bool enable); > > +/** > > + * igt_sysfs_rw_attr: > > + * @dir: file descriptor for parent directory > > + * @attr: name of sysfs attribute > > + * @start: start value for searching for matching reads/writes > > + * @tol: tolerance to use to compare written and read values > > + * @rsvd: reserved field used internally > > + * > > + * Structure used to describe the rw sysfs attribute to > > + * igt_sysfs_rw_attr_verify > > + */ > > +typedef struct igt_sysfs_rw_attr { > > + int dir; > > + char *attr; > > + uint64_t start; > > + double tol; > > + void *rsvd; > > +} igt_sysfs_rw_attr_t; > > + > > +void igt_sysfs_rw_attr_verify(igt_sysfs_rw_attr_t *rw); > > + > > #endif /* __IGT_SYSFS_H__ */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes 2022-12-14 16:37 ` Dixit, Ashutosh @ 2022-12-15 2:34 ` Dixit, Ashutosh 0 siblings, 0 replies; 13+ messages in thread From: Dixit, Ashutosh @ 2022-12-15 2:34 UTC (permalink / raw) To: Tauro, Riana; +Cc: igt-dev, Badal Nilawar On Wed, 14 Dec 2022 08:37:09 -0800, Dixit, Ashutosh wrote: > > On Tue, 13 Dec 2022 22:51:39 -0800, Tauro, Riana wrote: > > > > Hi Ashutosh > > Hi Riana, FYI: I just posted a v5 after dropping the function rw_attr_reverify_points since it was repeating the verification already done during the sweep so I thought had limited utility. This results in simplifying the code even more. Please review. Thanks. -- Ashutosh ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-12-16 10:43 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-12-15 2:31 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit 2022-12-15 11:49 ` Tauro, Riana 2022-12-15 18:20 ` Dixit, Ashutosh 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 2/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit 2022-12-15 5:30 ` Tauro, Riana 2022-12-15 2:31 ` [igt-dev] [PATCH i-g-t 3/3] HAX: Add i915_hwmon* to fast-feedback.testlist Ashutosh Dixit 2022-12-15 3:08 ` [igt-dev] ✓ Fi.CI.BAT: success for i915/i915_hwmon: General verification of hwmon attributes (rev5) Patchwork 2022-12-16 10:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2022-12-14 3:09 [igt-dev] [PATCH i-g-t 0/3] i915/i915_hwmon: General verification of hwmon attributes Ashutosh Dixit 2022-12-14 3:09 ` [igt-dev] [PATCH i-g-t 1/3] lib/igt_sysfs: Generic verification of writable sysfs attributes Ashutosh Dixit 2022-12-14 6:51 ` Tauro, Riana 2022-12-14 16:37 ` Dixit, Ashutosh 2022-12-15 2:34 ` Dixit, Ashutosh
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox