* [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
@ 2017-10-26 11:38 Maarten Lankhorst
2017-10-26 12:52 ` ✗ Fi.CI.BAT: failure for " Patchwork
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Maarten Lankhorst @ 2017-10-26 11:38 UTC (permalink / raw)
To: intel-gfx; +Cc: Tomi Sarvela, Jani Nikula
In kernel v4.10 the legacy crc api has been replaced by a generic
drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
opened any more when the crtc is not active after kernel commit 8038e09be5a3
("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
Statting the file should be enough for testing it's supported.
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
lib/igt_debugfs.c | 231 +++++++-----------------------------------------------
1 file changed, 28 insertions(+), 203 deletions(-)
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 8b33b478a9a9..63a0989e5ceb 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -416,16 +416,12 @@ char *igt_crc_to_string(igt_crc_t *crc)
#define MAX_CRC_ENTRIES 10
#define MAX_LINE_LEN (10 + 11 * MAX_CRC_ENTRIES + 1)
-/* (6 fields, 8 chars each, space separated (5) + '\n') */
-#define LEGACY_LINE_LEN (6 * 8 + 5 + 1)
-
struct _igt_pipe_crc {
int fd;
int dir;
int ctl_fd;
int crc_fd;
int flags;
- bool is_legacy;
enum pipe pipe;
enum intel_pipe_crc_source source;
@@ -449,130 +445,6 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
return pipe_crc_sources[source];
}
-static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
-{
- char buf[64];
-
- /* Stop first just to make sure we don't have lingering state left. */
- igt_pipe_crc_stop(pipe_crc);
-
- if (pipe_crc->is_legacy)
- sprintf(buf, "pipe %s %s", kmstest_pipe_name(pipe_crc->pipe),
- pipe_crc_source_name(pipe_crc->source));
- else
- sprintf(buf, "%s", pipe_crc_source_name(pipe_crc->source));
-
- igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)), strlen(buf));
-
- if (!pipe_crc->is_legacy) {
- int err;
-
- sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
- err = 0;
-
- pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
- if (pipe_crc->crc_fd < 0)
- err = -errno;
-
- if (err == -EINVAL)
- return false;
-
- igt_assert_eq(err, 0);
- }
-
- errno = 0;
- return true;
-}
-
-static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
-{
- char buf[32];
-
- sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe));
- igt_assert_eq(write(fd, buf, strlen(buf)), strlen(buf));
-}
-
-static void igt_pipe_crc_reset(int drm_fd)
-{
- struct dirent *dirent;
- const char *cmd = "none";
- bool done = false;
- DIR *dir;
- int fdir;
- int fd;
-
- fdir = igt_debugfs_dir(drm_fd);
- if (fdir < 0)
- return;
-
- dir = fdopendir(fdir);
- if (!dir) {
- close(fdir);
- return;
- }
-
- while ((dirent = readdir(dir))) {
- char buf[PATH_MAX];
-
- if (strcmp(dirent->d_name, "crtc-") != 0)
- continue;
-
- sprintf(buf, "%s/crc/control", dirent->d_name);
- fd = openat(fdir, buf, O_WRONLY);
- if (fd < 0)
- continue;
-
- igt_assert_eq(write(fd, cmd, strlen(cmd)), strlen(cmd));
- close(fd);
-
- done = true;
- }
- closedir(dir);
-
- if (!done) {
- fd = openat(fdir, "i915_display_crtc_ctl", O_WRONLY);
- if (fd != -1) {
- igt_pipe_crc_pipe_off(fd, PIPE_A);
- igt_pipe_crc_pipe_off(fd, PIPE_B);
- igt_pipe_crc_pipe_off(fd, PIPE_C);
-
- close(fd);
- }
- }
-
- close(fdir);
-}
-
-static void pipe_crc_exit_handler(int sig)
-{
- struct dirent *dirent;
- char buf[PATH_MAX];
- DIR *dir;
- int fd;
-
- dir = opendir("/dev/dri");
- if (!dir)
- return;
-
- /*
- * Try to reset CRC capture for all DRM devices, this is only needed
- * for the legacy CRC ABI and can be completely removed once the
- * legacy codepaths are removed.
- */
- while ((dirent = readdir(dir))) {
- if (strncmp(dirent->d_name, "card", 4) != 0)
- continue;
-
- sprintf(buf, "/dev/dri/%s", dirent->d_name);
- fd = open(buf, O_WRONLY);
-
- igt_pipe_crc_reset(fd);
-
- close(fd);
- }
- closedir(dir);
-}
-
/**
* igt_require_pipe_crc:
*
@@ -582,20 +454,15 @@ static void pipe_crc_exit_handler(int sig)
*/
void igt_require_pipe_crc(int fd)
{
- const char *cmd = "pipe A none";
- int ctl, written;
-
- ctl = igt_debugfs_open(fd, "crtc-0/crc/control", O_RDONLY);
- if (ctl < 0) {
- ctl = igt_debugfs_open(fd, "i915_display_crc_ctl", O_WRONLY);
- igt_require_f(ctl,
- "No display_crc_ctl found, kernel too old\n");
-
- written = write(ctl, cmd, strlen(cmd));
- igt_require_f(written < 0,
- "CRCs not supported on this platform\n");
- }
- close(ctl);
+ int dir;
+ struct stat stat;
+
+ dir = igt_debugfs_dir(fd);
+ igt_require_f(dir >= 0, "Could not open debugfs directory\n");
+ igt_require_f(fstatat(dir, "crtc-0/crc/control", &stat, 0) == 0,
+ "CRCs not supported on this platform\n");
+
+ close(dir);
}
static void igt_hpd_storm_exit_handler(int sig)
@@ -729,29 +596,13 @@ pipe_crc_new(int fd, enum pipe pipe, enum intel_pipe_crc_source source, int flag
debugfs = igt_debugfs_dir(fd);
igt_assert(debugfs != -1);
- igt_install_exit_handler(pipe_crc_exit_handler);
-
pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
sprintf(buf, "crtc-%d/crc/control", pipe);
pipe_crc->ctl_fd = openat(debugfs, buf, O_WRONLY);
- if (pipe_crc->ctl_fd == -1) {
- pipe_crc->ctl_fd = openat(debugfs,
- "i915_display_crc_ctl", O_WRONLY);
- igt_assert(pipe_crc->ctl_fd != -1);
- pipe_crc->is_legacy = true;
- }
-
- if (pipe_crc->is_legacy) {
- sprintf(buf, "i915_pipe_%s_crc", kmstest_pipe_name(pipe));
- pipe_crc->crc_fd = openat(debugfs, buf, flags);
- igt_assert(pipe_crc->crc_fd != -1);
- igt_debug("Using legacy frame CRC ABI\n");
- } else {
- pipe_crc->crc_fd = -1;
- igt_debug("Using generic frame CRC ABI\n");
- }
+ igt_assert(pipe_crc->ctl_fd != -1);
+ pipe_crc->crc_fd = -1;
pipe_crc->fd = fd;
pipe_crc->dir = debugfs;
pipe_crc->pipe = pipe;
@@ -817,18 +668,9 @@ void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
static bool pipe_crc_init_from_string(igt_pipe_crc_t *pipe_crc, igt_crc_t *crc,
const char *line)
{
- int n, i;
+ int i;
const char *buf;
- if (pipe_crc->is_legacy) {
- crc->has_valid_frame = true;
- crc->n_words = 5;
- n = sscanf(line, "%8u %8x %8x %8x %8x %8x", &crc->frame,
- &crc->crc[0], &crc->crc[1], &crc->crc[2],
- &crc->crc[3], &crc->crc[4]);
- return n == 6;
- }
-
if (strncmp(line, "XXXXXXXXXX", 10) == 0)
crc->has_valid_frame = false;
else {
@@ -849,15 +691,9 @@ static int read_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
{
ssize_t bytes_read;
char buf[MAX_LINE_LEN + 1];
- size_t read_len;
-
- if (pipe_crc->is_legacy)
- read_len = LEGACY_LINE_LEN;
- else
- read_len = MAX_LINE_LEN;
igt_set_timeout(5, "CRC reading");
- bytes_read = read(pipe_crc->crc_fd, &buf, read_len);
+ bytes_read = read(pipe_crc->crc_fd, &buf, MAX_LINE_LEN);
igt_reset_timeout();
if (bytes_read < 0 && errno == EAGAIN)
@@ -888,22 +724,19 @@ static void read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
*/
void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
{
- igt_crc_t crc;
-
- igt_assert(igt_pipe_crc_do_start(pipe_crc));
-
- if (pipe_crc->is_legacy) {
- /*
- * For some no yet identified reason, the first CRC is
- * bonkers. So let's just wait for the next vblank and read
- * out the buggy result.
- *
- * On CHV sometimes the second CRC is bonkers as well, so
- * don't trust that one either.
- */
- read_one_crc(pipe_crc, &crc);
- read_one_crc(pipe_crc, &crc);
- }
+ const char *src = pipe_crc_source_name(pipe_crc->source);
+ char buf[32];
+
+ /* Stop first just to make sure we don't have lingering state left. */
+ igt_pipe_crc_stop(pipe_crc);
+
+ igt_assert_eq(write(pipe_crc->ctl_fd, src, strlen(src)), strlen(src));
+
+ sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
+
+ pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
+ igt_assert(pipe_crc->crc_fd != -1);
+ errno = 0;
}
/**
@@ -914,16 +747,8 @@ void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
*/
void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc)
{
- char buf[32];
-
- if (pipe_crc->is_legacy) {
- sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe_crc->pipe));
- igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)),
- strlen(buf));
- } else {
- close(pipe_crc->crc_fd);
- pipe_crc->crc_fd = -1;
- }
+ close(pipe_crc->crc_fd);
+ pipe_crc->crc_fd = -1;
}
/**
--
2.14.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 8+ messages in thread
* ✗ Fi.CI.BAT: failure for lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-26 11:38 [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api Maarten Lankhorst
@ 2017-10-26 12:52 ` Patchwork
2017-10-26 14:56 ` ✓ Fi.CI.IGT: success " Patchwork
2017-10-26 17:23 ` [PATCH i-g-t] " James Ausmus
2 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2017-10-26 12:52 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: lib/igt_debugfs: Remove support for legacy CRC api.
URL : https://patchwork.freedesktop.org/series/32689/
State : failure
== Summary ==
IGT patchset tested on top of latest successful build
1fc4de1ca390adec9be8bd7cc0c36cab07465959 igt/gem_exec_latency: Wire up an interloper for preemption
with latest DRM-Tip kernel build CI_DRM_3286
df3033b17405 drm-tip: 2017y-10m-26d-11h-03m-59s UTC integration manifest
No testlist changes.
Test kms_pipe_crc_basic:
Subgroup hang-read-crc-pipe-b:
pass -> INCOMPLETE (fi-cnl-y)
Subgroup read-crc-pipe-b-frame-sequence:
skip -> PASS (fi-hsw-4770r) fdo#102332
Subgroup suspend-read-crc-pipe-b:
pass -> DMESG-WARN (fi-byt-j1900) fdo#101705
fdo#102332 https://bugs.freedesktop.org/show_bug.cgi?id=102332
fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:444s
fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:454s
fi-blb-e6850 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:374s
fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:528s
fi-bwr-2160 total:289 pass:183 dwarn:0 dfail:0 fail:0 skip:106 time:264s
fi-bxt-dsi total:289 pass:259 dwarn:0 dfail:0 fail:0 skip:30 time:500s
fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:502s
fi-byt-j1900 total:289 pass:253 dwarn:1 dfail:0 fail:0 skip:35 time:502s
fi-byt-n2820 total:289 pass:249 dwarn:1 dfail:0 fail:0 skip:39 time:484s
fi-cfl-s total:289 pass:253 dwarn:4 dfail:0 fail:0 skip:32 time:561s
fi-cnl-y total:231 pass:206 dwarn:0 dfail:0 fail:0 skip:24
fi-elk-e7500 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:416s
fi-gdg-551 total:289 pass:178 dwarn:1 dfail:0 fail:1 skip:109 time:250s
fi-glk-1 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:578s
fi-glk-dsi total:289 pass:258 dwarn:0 dfail:0 fail:1 skip:30 time:487s
fi-hsw-4770 total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:430s
fi-hsw-4770r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:430s
fi-ilk-650 total:289 pass:228 dwarn:0 dfail:0 fail:0 skip:61 time:437s
fi-ivb-3520m total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:497s
fi-ivb-3770 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:467s
fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:489s
fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:585s
fi-kbl-7567u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:475s
fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:586s
fi-pnv-d510 total:289 pass:222 dwarn:1 dfail:0 fail:0 skip:66 time:550s
fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:457s
fi-skl-6600u total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:589s
fi-skl-6700hq total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:645s
fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:518s
fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:510s
fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:461s
fi-snb-2520m total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:564s
fi-snb-2600 total:289 pass:249 dwarn:0 dfail:0 fail:0 skip:40 time:429s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_427/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* ✓ Fi.CI.IGT: success for lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-26 11:38 [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api Maarten Lankhorst
2017-10-26 12:52 ` ✗ Fi.CI.BAT: failure for " Patchwork
@ 2017-10-26 14:56 ` Patchwork
2017-10-26 17:23 ` [PATCH i-g-t] " James Ausmus
2 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2017-10-26 14:56 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: lib/igt_debugfs: Remove support for legacy CRC api.
URL : https://patchwork.freedesktop.org/series/32689/
State : success
== Summary ==
Test kms_busy:
Subgroup extended-modeset-hang-oldfb-with-reset-render-B:
dmesg-warn -> PASS (shard-hsw) fdo#102249
Test kms_plane:
Subgroup plane-panning-bottom-right-suspend-pipe-A-planes:
skip -> PASS (shard-hsw)
Test kms_setmode:
Subgroup basic:
pass -> FAIL (shard-hsw) fdo#99912
fdo#102249 https://bugs.freedesktop.org/show_bug.cgi?id=102249
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
shard-hsw total:2539 pass:1433 dwarn:0 dfail:0 fail:9 skip:1097 time:9221s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_427/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-26 11:38 [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api Maarten Lankhorst
2017-10-26 12:52 ` ✗ Fi.CI.BAT: failure for " Patchwork
2017-10-26 14:56 ` ✓ Fi.CI.IGT: success " Patchwork
@ 2017-10-26 17:23 ` James Ausmus
2017-10-27 7:39 ` Jani Nikula
2 siblings, 1 reply; 8+ messages in thread
From: James Ausmus @ 2017-10-26 17:23 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: Tomi Sarvela, Jani Nikula, intel-gfx
On Thu, Oct 26, 2017 at 01:38:51PM +0200, Maarten Lankhorst wrote:
> In kernel v4.10 the legacy crc api has been replaced by a generic
> drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
> opened any more when the crtc is not active after kernel commit 8038e09be5a3
> ("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
> Statting the file should be enough for testing it's supported.
What's the impact of this change on devices running older kernels - such
as KBL ChromeOS on 4.4?
>
> Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> lib/igt_debugfs.c | 231 +++++++-----------------------------------------------
> 1 file changed, 28 insertions(+), 203 deletions(-)
>
> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> index 8b33b478a9a9..63a0989e5ceb 100644
> --- a/lib/igt_debugfs.c
> +++ b/lib/igt_debugfs.c
> @@ -416,16 +416,12 @@ char *igt_crc_to_string(igt_crc_t *crc)
> #define MAX_CRC_ENTRIES 10
> #define MAX_LINE_LEN (10 + 11 * MAX_CRC_ENTRIES + 1)
>
> -/* (6 fields, 8 chars each, space separated (5) + '\n') */
> -#define LEGACY_LINE_LEN (6 * 8 + 5 + 1)
> -
> struct _igt_pipe_crc {
> int fd;
> int dir;
> int ctl_fd;
> int crc_fd;
> int flags;
> - bool is_legacy;
>
> enum pipe pipe;
> enum intel_pipe_crc_source source;
> @@ -449,130 +445,6 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
> return pipe_crc_sources[source];
> }
>
> -static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
> -{
> - char buf[64];
> -
> - /* Stop first just to make sure we don't have lingering state left. */
> - igt_pipe_crc_stop(pipe_crc);
> -
> - if (pipe_crc->is_legacy)
> - sprintf(buf, "pipe %s %s", kmstest_pipe_name(pipe_crc->pipe),
> - pipe_crc_source_name(pipe_crc->source));
> - else
> - sprintf(buf, "%s", pipe_crc_source_name(pipe_crc->source));
> -
> - igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)), strlen(buf));
> -
> - if (!pipe_crc->is_legacy) {
> - int err;
> -
> - sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
> - err = 0;
> -
> - pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
> - if (pipe_crc->crc_fd < 0)
> - err = -errno;
> -
> - if (err == -EINVAL)
> - return false;
> -
> - igt_assert_eq(err, 0);
> - }
> -
> - errno = 0;
> - return true;
> -}
> -
> -static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
> -{
> - char buf[32];
> -
> - sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe));
> - igt_assert_eq(write(fd, buf, strlen(buf)), strlen(buf));
> -}
> -
> -static void igt_pipe_crc_reset(int drm_fd)
> -{
> - struct dirent *dirent;
> - const char *cmd = "none";
> - bool done = false;
> - DIR *dir;
> - int fdir;
> - int fd;
> -
> - fdir = igt_debugfs_dir(drm_fd);
> - if (fdir < 0)
> - return;
> -
> - dir = fdopendir(fdir);
> - if (!dir) {
> - close(fdir);
> - return;
> - }
> -
> - while ((dirent = readdir(dir))) {
> - char buf[PATH_MAX];
> -
> - if (strcmp(dirent->d_name, "crtc-") != 0)
> - continue;
> -
> - sprintf(buf, "%s/crc/control", dirent->d_name);
> - fd = openat(fdir, buf, O_WRONLY);
> - if (fd < 0)
> - continue;
> -
> - igt_assert_eq(write(fd, cmd, strlen(cmd)), strlen(cmd));
> - close(fd);
> -
> - done = true;
> - }
> - closedir(dir);
> -
> - if (!done) {
> - fd = openat(fdir, "i915_display_crtc_ctl", O_WRONLY);
> - if (fd != -1) {
> - igt_pipe_crc_pipe_off(fd, PIPE_A);
> - igt_pipe_crc_pipe_off(fd, PIPE_B);
> - igt_pipe_crc_pipe_off(fd, PIPE_C);
> -
> - close(fd);
> - }
> - }
> -
> - close(fdir);
> -}
> -
> -static void pipe_crc_exit_handler(int sig)
> -{
> - struct dirent *dirent;
> - char buf[PATH_MAX];
> - DIR *dir;
> - int fd;
> -
> - dir = opendir("/dev/dri");
> - if (!dir)
> - return;
> -
> - /*
> - * Try to reset CRC capture for all DRM devices, this is only needed
> - * for the legacy CRC ABI and can be completely removed once the
> - * legacy codepaths are removed.
> - */
> - while ((dirent = readdir(dir))) {
> - if (strncmp(dirent->d_name, "card", 4) != 0)
> - continue;
> -
> - sprintf(buf, "/dev/dri/%s", dirent->d_name);
> - fd = open(buf, O_WRONLY);
> -
> - igt_pipe_crc_reset(fd);
> -
> - close(fd);
> - }
> - closedir(dir);
> -}
> -
> /**
> * igt_require_pipe_crc:
> *
> @@ -582,20 +454,15 @@ static void pipe_crc_exit_handler(int sig)
> */
> void igt_require_pipe_crc(int fd)
> {
> - const char *cmd = "pipe A none";
> - int ctl, written;
> -
> - ctl = igt_debugfs_open(fd, "crtc-0/crc/control", O_RDONLY);
> - if (ctl < 0) {
> - ctl = igt_debugfs_open(fd, "i915_display_crc_ctl", O_WRONLY);
> - igt_require_f(ctl,
> - "No display_crc_ctl found, kernel too old\n");
> -
> - written = write(ctl, cmd, strlen(cmd));
> - igt_require_f(written < 0,
> - "CRCs not supported on this platform\n");
> - }
> - close(ctl);
> + int dir;
> + struct stat stat;
> +
> + dir = igt_debugfs_dir(fd);
> + igt_require_f(dir >= 0, "Could not open debugfs directory\n");
> + igt_require_f(fstatat(dir, "crtc-0/crc/control", &stat, 0) == 0,
> + "CRCs not supported on this platform\n");
> +
> + close(dir);
> }
>
> static void igt_hpd_storm_exit_handler(int sig)
> @@ -729,29 +596,13 @@ pipe_crc_new(int fd, enum pipe pipe, enum intel_pipe_crc_source source, int flag
> debugfs = igt_debugfs_dir(fd);
> igt_assert(debugfs != -1);
>
> - igt_install_exit_handler(pipe_crc_exit_handler);
> -
> pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
>
> sprintf(buf, "crtc-%d/crc/control", pipe);
> pipe_crc->ctl_fd = openat(debugfs, buf, O_WRONLY);
> - if (pipe_crc->ctl_fd == -1) {
> - pipe_crc->ctl_fd = openat(debugfs,
> - "i915_display_crc_ctl", O_WRONLY);
> - igt_assert(pipe_crc->ctl_fd != -1);
> - pipe_crc->is_legacy = true;
> - }
> -
> - if (pipe_crc->is_legacy) {
> - sprintf(buf, "i915_pipe_%s_crc", kmstest_pipe_name(pipe));
> - pipe_crc->crc_fd = openat(debugfs, buf, flags);
> - igt_assert(pipe_crc->crc_fd != -1);
> - igt_debug("Using legacy frame CRC ABI\n");
> - } else {
> - pipe_crc->crc_fd = -1;
> - igt_debug("Using generic frame CRC ABI\n");
> - }
> + igt_assert(pipe_crc->ctl_fd != -1);
>
> + pipe_crc->crc_fd = -1;
> pipe_crc->fd = fd;
> pipe_crc->dir = debugfs;
> pipe_crc->pipe = pipe;
> @@ -817,18 +668,9 @@ void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
> static bool pipe_crc_init_from_string(igt_pipe_crc_t *pipe_crc, igt_crc_t *crc,
> const char *line)
> {
> - int n, i;
> + int i;
> const char *buf;
>
> - if (pipe_crc->is_legacy) {
> - crc->has_valid_frame = true;
> - crc->n_words = 5;
> - n = sscanf(line, "%8u %8x %8x %8x %8x %8x", &crc->frame,
> - &crc->crc[0], &crc->crc[1], &crc->crc[2],
> - &crc->crc[3], &crc->crc[4]);
> - return n == 6;
> - }
> -
> if (strncmp(line, "XXXXXXXXXX", 10) == 0)
> crc->has_valid_frame = false;
> else {
> @@ -849,15 +691,9 @@ static int read_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
> {
> ssize_t bytes_read;
> char buf[MAX_LINE_LEN + 1];
> - size_t read_len;
> -
> - if (pipe_crc->is_legacy)
> - read_len = LEGACY_LINE_LEN;
> - else
> - read_len = MAX_LINE_LEN;
>
> igt_set_timeout(5, "CRC reading");
> - bytes_read = read(pipe_crc->crc_fd, &buf, read_len);
> + bytes_read = read(pipe_crc->crc_fd, &buf, MAX_LINE_LEN);
> igt_reset_timeout();
>
> if (bytes_read < 0 && errno == EAGAIN)
> @@ -888,22 +724,19 @@ static void read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
> */
> void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
> {
> - igt_crc_t crc;
> -
> - igt_assert(igt_pipe_crc_do_start(pipe_crc));
> -
> - if (pipe_crc->is_legacy) {
> - /*
> - * For some no yet identified reason, the first CRC is
> - * bonkers. So let's just wait for the next vblank and read
> - * out the buggy result.
> - *
> - * On CHV sometimes the second CRC is bonkers as well, so
> - * don't trust that one either.
> - */
> - read_one_crc(pipe_crc, &crc);
> - read_one_crc(pipe_crc, &crc);
> - }
> + const char *src = pipe_crc_source_name(pipe_crc->source);
> + char buf[32];
> +
> + /* Stop first just to make sure we don't have lingering state left. */
> + igt_pipe_crc_stop(pipe_crc);
> +
> + igt_assert_eq(write(pipe_crc->ctl_fd, src, strlen(src)), strlen(src));
> +
> + sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
> +
> + pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
> + igt_assert(pipe_crc->crc_fd != -1);
> + errno = 0;
> }
>
> /**
> @@ -914,16 +747,8 @@ void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
> */
> void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc)
> {
> - char buf[32];
> -
> - if (pipe_crc->is_legacy) {
> - sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe_crc->pipe));
> - igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)),
> - strlen(buf));
> - } else {
> - close(pipe_crc->crc_fd);
> - pipe_crc->crc_fd = -1;
> - }
> + close(pipe_crc->crc_fd);
> + pipe_crc->crc_fd = -1;
> }
>
> /**
> --
> 2.14.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-26 17:23 ` [PATCH i-g-t] " James Ausmus
@ 2017-10-27 7:39 ` Jani Nikula
2017-10-27 8:05 ` Maarten Lankhorst
0 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2017-10-27 7:39 UTC (permalink / raw)
To: James Ausmus, Maarten Lankhorst; +Cc: Tomi Sarvela, intel-gfx
On Thu, 26 Oct 2017, James Ausmus <james.ausmus@intel.com> wrote:
> On Thu, Oct 26, 2017 at 01:38:51PM +0200, Maarten Lankhorst wrote:
>> In kernel v4.10 the legacy crc api has been replaced by a generic
>> drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
>> opened any more when the crtc is not active after kernel commit 8038e09be5a3
>> ("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
>> Statting the file should be enough for testing it's supported.
>
> What's the impact of this change on devices running older kernels - such
> as KBL ChromeOS on 4.4?
If you backport kernel features, you either also backport the new kernel
CRC API, or forward port the igt support for the legacy debugfs if you
want to use latest upstream igt?
BR,
Jani.
>
>>
>> Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
>> Cc: Petri Latvala <petri.latvala@intel.com>
>> Cc: Jani Nikula <jani.nikula@intel.com>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>> lib/igt_debugfs.c | 231 +++++++-----------------------------------------------
>> 1 file changed, 28 insertions(+), 203 deletions(-)
>>
>> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
>> index 8b33b478a9a9..63a0989e5ceb 100644
>> --- a/lib/igt_debugfs.c
>> +++ b/lib/igt_debugfs.c
>> @@ -416,16 +416,12 @@ char *igt_crc_to_string(igt_crc_t *crc)
>> #define MAX_CRC_ENTRIES 10
>> #define MAX_LINE_LEN (10 + 11 * MAX_CRC_ENTRIES + 1)
>>
>> -/* (6 fields, 8 chars each, space separated (5) + '\n') */
>> -#define LEGACY_LINE_LEN (6 * 8 + 5 + 1)
>> -
>> struct _igt_pipe_crc {
>> int fd;
>> int dir;
>> int ctl_fd;
>> int crc_fd;
>> int flags;
>> - bool is_legacy;
>>
>> enum pipe pipe;
>> enum intel_pipe_crc_source source;
>> @@ -449,130 +445,6 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
>> return pipe_crc_sources[source];
>> }
>>
>> -static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
>> -{
>> - char buf[64];
>> -
>> - /* Stop first just to make sure we don't have lingering state left. */
>> - igt_pipe_crc_stop(pipe_crc);
>> -
>> - if (pipe_crc->is_legacy)
>> - sprintf(buf, "pipe %s %s", kmstest_pipe_name(pipe_crc->pipe),
>> - pipe_crc_source_name(pipe_crc->source));
>> - else
>> - sprintf(buf, "%s", pipe_crc_source_name(pipe_crc->source));
>> -
>> - igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)), strlen(buf));
>> -
>> - if (!pipe_crc->is_legacy) {
>> - int err;
>> -
>> - sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
>> - err = 0;
>> -
>> - pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
>> - if (pipe_crc->crc_fd < 0)
>> - err = -errno;
>> -
>> - if (err == -EINVAL)
>> - return false;
>> -
>> - igt_assert_eq(err, 0);
>> - }
>> -
>> - errno = 0;
>> - return true;
>> -}
>> -
>> -static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
>> -{
>> - char buf[32];
>> -
>> - sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe));
>> - igt_assert_eq(write(fd, buf, strlen(buf)), strlen(buf));
>> -}
>> -
>> -static void igt_pipe_crc_reset(int drm_fd)
>> -{
>> - struct dirent *dirent;
>> - const char *cmd = "none";
>> - bool done = false;
>> - DIR *dir;
>> - int fdir;
>> - int fd;
>> -
>> - fdir = igt_debugfs_dir(drm_fd);
>> - if (fdir < 0)
>> - return;
>> -
>> - dir = fdopendir(fdir);
>> - if (!dir) {
>> - close(fdir);
>> - return;
>> - }
>> -
>> - while ((dirent = readdir(dir))) {
>> - char buf[PATH_MAX];
>> -
>> - if (strcmp(dirent->d_name, "crtc-") != 0)
>> - continue;
>> -
>> - sprintf(buf, "%s/crc/control", dirent->d_name);
>> - fd = openat(fdir, buf, O_WRONLY);
>> - if (fd < 0)
>> - continue;
>> -
>> - igt_assert_eq(write(fd, cmd, strlen(cmd)), strlen(cmd));
>> - close(fd);
>> -
>> - done = true;
>> - }
>> - closedir(dir);
>> -
>> - if (!done) {
>> - fd = openat(fdir, "i915_display_crtc_ctl", O_WRONLY);
>> - if (fd != -1) {
>> - igt_pipe_crc_pipe_off(fd, PIPE_A);
>> - igt_pipe_crc_pipe_off(fd, PIPE_B);
>> - igt_pipe_crc_pipe_off(fd, PIPE_C);
>> -
>> - close(fd);
>> - }
>> - }
>> -
>> - close(fdir);
>> -}
>> -
>> -static void pipe_crc_exit_handler(int sig)
>> -{
>> - struct dirent *dirent;
>> - char buf[PATH_MAX];
>> - DIR *dir;
>> - int fd;
>> -
>> - dir = opendir("/dev/dri");
>> - if (!dir)
>> - return;
>> -
>> - /*
>> - * Try to reset CRC capture for all DRM devices, this is only needed
>> - * for the legacy CRC ABI and can be completely removed once the
>> - * legacy codepaths are removed.
>> - */
>> - while ((dirent = readdir(dir))) {
>> - if (strncmp(dirent->d_name, "card", 4) != 0)
>> - continue;
>> -
>> - sprintf(buf, "/dev/dri/%s", dirent->d_name);
>> - fd = open(buf, O_WRONLY);
>> -
>> - igt_pipe_crc_reset(fd);
>> -
>> - close(fd);
>> - }
>> - closedir(dir);
>> -}
>> -
>> /**
>> * igt_require_pipe_crc:
>> *
>> @@ -582,20 +454,15 @@ static void pipe_crc_exit_handler(int sig)
>> */
>> void igt_require_pipe_crc(int fd)
>> {
>> - const char *cmd = "pipe A none";
>> - int ctl, written;
>> -
>> - ctl = igt_debugfs_open(fd, "crtc-0/crc/control", O_RDONLY);
>> - if (ctl < 0) {
>> - ctl = igt_debugfs_open(fd, "i915_display_crc_ctl", O_WRONLY);
>> - igt_require_f(ctl,
>> - "No display_crc_ctl found, kernel too old\n");
>> -
>> - written = write(ctl, cmd, strlen(cmd));
>> - igt_require_f(written < 0,
>> - "CRCs not supported on this platform\n");
>> - }
>> - close(ctl);
>> + int dir;
>> + struct stat stat;
>> +
>> + dir = igt_debugfs_dir(fd);
>> + igt_require_f(dir >= 0, "Could not open debugfs directory\n");
>> + igt_require_f(fstatat(dir, "crtc-0/crc/control", &stat, 0) == 0,
>> + "CRCs not supported on this platform\n");
>> +
>> + close(dir);
>> }
>>
>> static void igt_hpd_storm_exit_handler(int sig)
>> @@ -729,29 +596,13 @@ pipe_crc_new(int fd, enum pipe pipe, enum intel_pipe_crc_source source, int flag
>> debugfs = igt_debugfs_dir(fd);
>> igt_assert(debugfs != -1);
>>
>> - igt_install_exit_handler(pipe_crc_exit_handler);
>> -
>> pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
>>
>> sprintf(buf, "crtc-%d/crc/control", pipe);
>> pipe_crc->ctl_fd = openat(debugfs, buf, O_WRONLY);
>> - if (pipe_crc->ctl_fd == -1) {
>> - pipe_crc->ctl_fd = openat(debugfs,
>> - "i915_display_crc_ctl", O_WRONLY);
>> - igt_assert(pipe_crc->ctl_fd != -1);
>> - pipe_crc->is_legacy = true;
>> - }
>> -
>> - if (pipe_crc->is_legacy) {
>> - sprintf(buf, "i915_pipe_%s_crc", kmstest_pipe_name(pipe));
>> - pipe_crc->crc_fd = openat(debugfs, buf, flags);
>> - igt_assert(pipe_crc->crc_fd != -1);
>> - igt_debug("Using legacy frame CRC ABI\n");
>> - } else {
>> - pipe_crc->crc_fd = -1;
>> - igt_debug("Using generic frame CRC ABI\n");
>> - }
>> + igt_assert(pipe_crc->ctl_fd != -1);
>>
>> + pipe_crc->crc_fd = -1;
>> pipe_crc->fd = fd;
>> pipe_crc->dir = debugfs;
>> pipe_crc->pipe = pipe;
>> @@ -817,18 +668,9 @@ void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
>> static bool pipe_crc_init_from_string(igt_pipe_crc_t *pipe_crc, igt_crc_t *crc,
>> const char *line)
>> {
>> - int n, i;
>> + int i;
>> const char *buf;
>>
>> - if (pipe_crc->is_legacy) {
>> - crc->has_valid_frame = true;
>> - crc->n_words = 5;
>> - n = sscanf(line, "%8u %8x %8x %8x %8x %8x", &crc->frame,
>> - &crc->crc[0], &crc->crc[1], &crc->crc[2],
>> - &crc->crc[3], &crc->crc[4]);
>> - return n == 6;
>> - }
>> -
>> if (strncmp(line, "XXXXXXXXXX", 10) == 0)
>> crc->has_valid_frame = false;
>> else {
>> @@ -849,15 +691,9 @@ static int read_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
>> {
>> ssize_t bytes_read;
>> char buf[MAX_LINE_LEN + 1];
>> - size_t read_len;
>> -
>> - if (pipe_crc->is_legacy)
>> - read_len = LEGACY_LINE_LEN;
>> - else
>> - read_len = MAX_LINE_LEN;
>>
>> igt_set_timeout(5, "CRC reading");
>> - bytes_read = read(pipe_crc->crc_fd, &buf, read_len);
>> + bytes_read = read(pipe_crc->crc_fd, &buf, MAX_LINE_LEN);
>> igt_reset_timeout();
>>
>> if (bytes_read < 0 && errno == EAGAIN)
>> @@ -888,22 +724,19 @@ static void read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
>> */
>> void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
>> {
>> - igt_crc_t crc;
>> -
>> - igt_assert(igt_pipe_crc_do_start(pipe_crc));
>> -
>> - if (pipe_crc->is_legacy) {
>> - /*
>> - * For some no yet identified reason, the first CRC is
>> - * bonkers. So let's just wait for the next vblank and read
>> - * out the buggy result.
>> - *
>> - * On CHV sometimes the second CRC is bonkers as well, so
>> - * don't trust that one either.
>> - */
>> - read_one_crc(pipe_crc, &crc);
>> - read_one_crc(pipe_crc, &crc);
>> - }
>> + const char *src = pipe_crc_source_name(pipe_crc->source);
>> + char buf[32];
>> +
>> + /* Stop first just to make sure we don't have lingering state left. */
>> + igt_pipe_crc_stop(pipe_crc);
>> +
>> + igt_assert_eq(write(pipe_crc->ctl_fd, src, strlen(src)), strlen(src));
>> +
>> + sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
>> +
>> + pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
>> + igt_assert(pipe_crc->crc_fd != -1);
>> + errno = 0;
>> }
>>
>> /**
>> @@ -914,16 +747,8 @@ void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
>> */
>> void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc)
>> {
>> - char buf[32];
>> -
>> - if (pipe_crc->is_legacy) {
>> - sprintf(buf, "pipe %s none", kmstest_pipe_name(pipe_crc->pipe));
>> - igt_assert_eq(write(pipe_crc->ctl_fd, buf, strlen(buf)),
>> - strlen(buf));
>> - } else {
>> - close(pipe_crc->crc_fd);
>> - pipe_crc->crc_fd = -1;
>> - }
>> + close(pipe_crc->crc_fd);
>> + pipe_crc->crc_fd = -1;
>> }
>>
>> /**
>> --
>> 2.14.1
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-27 7:39 ` Jani Nikula
@ 2017-10-27 8:05 ` Maarten Lankhorst
2017-10-27 12:25 ` Petri Latvala
0 siblings, 1 reply; 8+ messages in thread
From: Maarten Lankhorst @ 2017-10-27 8:05 UTC (permalink / raw)
To: Jani Nikula, James Ausmus; +Cc: Tomi Sarvela, intel-gfx
Op 27-10-17 om 09:39 schreef Jani Nikula:
> On Thu, 26 Oct 2017, James Ausmus <james.ausmus@intel.com> wrote:
>> On Thu, Oct 26, 2017 at 01:38:51PM +0200, Maarten Lankhorst wrote:
>>> In kernel v4.10 the legacy crc api has been replaced by a generic
>>> drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
>>> opened any more when the crtc is not active after kernel commit 8038e09be5a3
>>> ("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
>>> Statting the file should be enough for testing it's supported.
>> What's the impact of this change on devices running older kernels - such
>> as KBL ChromeOS on 4.4?
> If you backport kernel features, you either also backport the new kernel
> CRC API, or forward port the igt support for the legacy debugfs if you
> want to use latest upstream igt?
It's part of the DRM api. Either you're using the old v4.4 kernel in which
case a lot of tests in IGT would have already failed, or when you backport
you backport the drm module too. Too much has changed between v4.4 and
drm-tip, there's no way you can just grab a current snapshot of the driver
and expect it to work in v4.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-27 8:05 ` Maarten Lankhorst
@ 2017-10-27 12:25 ` Petri Latvala
2017-11-02 13:20 ` Maarten Lankhorst
0 siblings, 1 reply; 8+ messages in thread
From: Petri Latvala @ 2017-10-27 12:25 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: Jani Nikula, Tomi Sarvela, intel-gfx
On Fri, Oct 27, 2017 at 10:05:39AM +0200, Maarten Lankhorst wrote:
> Op 27-10-17 om 09:39 schreef Jani Nikula:
> > On Thu, 26 Oct 2017, James Ausmus <james.ausmus@intel.com> wrote:
> >> On Thu, Oct 26, 2017 at 01:38:51PM +0200, Maarten Lankhorst wrote:
> >>> In kernel v4.10 the legacy crc api has been replaced by a generic
> >>> drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
> >>> opened any more when the crtc is not active after kernel commit 8038e09be5a3
> >>> ("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
> >>> Statting the file should be enough for testing it's supported.
> >> What's the impact of this change on devices running older kernels - such
> >> as KBL ChromeOS on 4.4?
> > If you backport kernel features, you either also backport the new kernel
> > CRC API, or forward port the igt support for the legacy debugfs if you
> > want to use latest upstream igt?
>
> It's part of the DRM api. Either you're using the old v4.4 kernel in which
> case a lot of tests in IGT would have already failed, or when you backport
> you backport the drm module too. Too much has changed between v4.4 and
> drm-tip, there's no way you can just grab a current snapshot of the driver
> and expect it to work in v4.4
Fair enough.
This is
Acked-by: Petri Latvala <petri.latvala@intel.com>
but someone(tm) should volunteer to review the actual changes.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api.
2017-10-27 12:25 ` Petri Latvala
@ 2017-11-02 13:20 ` Maarten Lankhorst
0 siblings, 0 replies; 8+ messages in thread
From: Maarten Lankhorst @ 2017-11-02 13:20 UTC (permalink / raw)
To: Petri Latvala; +Cc: Jani Nikula, Tomi Sarvela, intel-gfx, Daniel Vetter
Op 27-10-17 om 14:25 schreef Petri Latvala:
> On Fri, Oct 27, 2017 at 10:05:39AM +0200, Maarten Lankhorst wrote:
>> Op 27-10-17 om 09:39 schreef Jani Nikula:
>>> On Thu, 26 Oct 2017, James Ausmus <james.ausmus@intel.com> wrote:
>>>> On Thu, Oct 26, 2017 at 01:38:51PM +0200, Maarten Lankhorst wrote:
>>>>> In kernel v4.10 the legacy crc api has been replaced by a generic
>>>>> drm crc API. While at it, fix igt_require_pipe_crc, the file cannot be
>>>>> opened any more when the crtc is not active after kernel commit 8038e09be5a3
>>>>> ("drm/crc: Only open CRC on atomic drivers when the CRTC is active.").
>>>>> Statting the file should be enough for testing it's supported.
>>>> What's the impact of this change on devices running older kernels - such
>>>> as KBL ChromeOS on 4.4?
>>> If you backport kernel features, you either also backport the new kernel
>>> CRC API, or forward port the igt support for the legacy debugfs if you
>>> want to use latest upstream igt?
>> It's part of the DRM api. Either you're using the old v4.4 kernel in which
>> case a lot of tests in IGT would have already failed, or when you backport
>> you backport the drm module too. Too much has changed between v4.4 and
>> drm-tip, there's no way you can just grab a current snapshot of the driver
>> and expect it to work in v4.4
>
> Fair enough.
>
> This is
> Acked-by: Petri Latvala <petri.latvala@intel.com>
>
> but someone(tm) should volunteer to review the actual changes.
Pushed, thanks for review. :)
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-11-02 13:20 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-26 11:38 [PATCH i-g-t] lib/igt_debugfs: Remove support for legacy CRC api Maarten Lankhorst
2017-10-26 12:52 ` ✗ Fi.CI.BAT: failure for " Patchwork
2017-10-26 14:56 ` ✓ Fi.CI.IGT: success " Patchwork
2017-10-26 17:23 ` [PATCH i-g-t] " James Ausmus
2017-10-27 7:39 ` Jani Nikula
2017-10-27 8:05 ` Maarten Lankhorst
2017-10-27 12:25 ` Petri Latvala
2017-11-02 13:20 ` Maarten Lankhorst
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox