public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [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