All of lore.kernel.org
 help / color / mirror / Atom feed
From: Katarzyna Dec <katarzyna.dec@intel.com>
To: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [PATCH i-g-t 19/20] tests/psr: Test PSR using interrupt timestamps.
Date: Thu, 12 Apr 2018 14:56:12 +0200	[thread overview]
Message-ID: <20180412125612.GJ20211@kdec5-desk.ger.corp.intel.com> (raw)
In-Reply-To: <20180411023732.32362-19-dhinakaran.pandiyan@intel.com>

On Tue, Apr 10, 2018 at 07:37:31PM -0700, Dhinakaran Pandiyan wrote:
> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Please add more information about this test, why do we need it, what
we want to achieve with it.
This code looks good in general, but I am not experienced enough to
give r-b without others opinion and more info in commit msg.

Kasia
> ---
>  tests/kms_psr_sink_crc.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 86 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
> index 147b492f..dd811fb0 100644
> --- a/tests/kms_psr_sink_crc.c
> +++ b/tests/kms_psr_sink_crc.c
> @@ -78,6 +78,11 @@ typedef struct {
>  	bool with_timestamps;
>  } data_t;
>  
> +struct timestamps {
> +	int64_t last_attempted_entry;
> +	int64_t last_exit;
> +};
> +
>  static void create_cursor_fb(data_t *data)
>  {
>  	cairo_t *cr;
> @@ -209,7 +214,9 @@ static void timestamp_support(data_t *data)
>  	igt_debugfs_read(data->drm_fd, "i915_edp_psr_status", buf);
>  	data->with_timestamps = strstr(buf, "Last exit at:");
>  	igt_debug("Time stamp support %d\n", data->with_timestamps);
> -	igt_sysfs_set(data->debugfs_fd, "i915_edp_psr_debug", "0");
> +
> +	if (!data->with_timestamps)
> +		igt_sysfs_set(data->debugfs_fd, "i915_edp_psr_debug", "0");
>  }
>  
>  static bool psr_enabled(data_t *data)
> @@ -304,6 +311,77 @@ static bool drrs_disabled(data_t *data)
>  	return !strstr(buf, "DRRS Supported: Yes\n");
>  }
>  
> +static inline void  __timestamp_read(int fd, int64_t *entry, int64_t *exit)
> +{
> +	int found;
> +	char buf[512];
> +	char *begin;
> +
> +	igt_debugfs_read(fd, "i915_edp_psr_status", buf);
> +
> +	begin = strstr(buf, "Last attempted entry at: ");
> +	igt_assert_f(begin, "Could not read timestamp\n");
> +	found = sscanf(begin, "Last attempted entry at: %ld", entry);
> +	igt_assert(found == 1);
> +
> +	begin = strstr(buf, "Last exit at: ");
> +	igt_assert_f(begin, "Could not read timestamp\n");
> +	found =	sscanf(begin, "Last exit at: %ld\n", exit);
> +	igt_assert(found == 1);
> +}
> +
> +static inline void assert_timestamp_entry(data_t *data, struct timestamps *pre)
> +{
> +	int timeout = 300; /* 3 seconds */
> +
> +	if (!data->with_timestamps)
> +		return;
> +
> +	do {
> +		__timestamp_read(data->drm_fd, &pre->last_attempted_entry,
> +				 &pre->last_exit);
> +		igt_debug("pre-condition: last attempted exit: %ld last exit: %ld\n",
> +			  pre->last_attempted_entry, pre->last_exit);
> +
> +		if (pre->last_attempted_entry > pre->last_exit)
> +			break;
> +
> +		usleep(10000);
> +	} while (--timeout);
> +
> +	/* FIXME: Wait for a few frames after attempted entry interrupts so that
> +	 * PSR becomes active. Check if PSR_STATUS can be polled for a more
> +	 * precise check.
> +	 */
> +	usleep(50000);
> +	igt_assert_f(timeout, "timed out waiting for PSR entry\n");
> +}
> +
> +static inline void assert_timestamp_exit(data_t *data, struct timestamps *pre)
> +{
> +	int64_t last_attempted_entry = 0, last_exit = 0;
> +	int timeout = 300; /* 3 seconds */
> +
> +	if (!data->with_timestamps)
> +		return;
> +
> +	do {
> +		__timestamp_read(data->drm_fd, &last_attempted_entry,
> +				 &last_exit);
> +		igt_debug("post trigger: last attempted entry: %ld last exit: %ld\n",
> +			  last_attempted_entry, last_exit);
> +
> +		igt_assert_f(pre->last_attempted_entry == last_attempted_entry,
> +			     "PSR was not active before the exit trigger or the test waited too long to check for exit\n");
> +
> +		if (last_exit > last_attempted_entry)
> +			break;
> +
> +		usleep(10000);
> +	} while (--timeout);
> +	igt_assert_f(timeout, "timedout waiting for PSR exit\n");
> +}
> +
>  static void run_test(data_t *data)
>  {
>  	uint32_t handle = data->fb_white.gem_handle;
> @@ -311,8 +389,10 @@ static void run_test(data_t *data)
>  	void *ptr;
>  	char ref_crc[CRC_LEN];
>  	const char *expected = "";
> +	struct timestamps pre = {0};
>  
> -	igt_require_f(igt_interactive_debug || data->with_sink_crc,
> +	igt_require_f(data->with_timestamps ||
> +		      igt_interactive_debug || data->with_sink_crc,
>  		      "Enable interactive debug with --interactive-debug or "
>  		      "enable sink crc with --sink-crc\n");
>  
> @@ -334,6 +414,7 @@ static void run_test(data_t *data)
>  	manual(test_plane->type == DRM_PLANE_TYPE_PRIMARY ?
>  	       "screen WHITE" : "WHITE box on GREEN");
>  	is_not_green_crc(data, ref_crc);
> +	assert_timestamp_entry(data, &pre);
>  
>  	switch (data->op) {
>  	case PAGE_FLIP:
> @@ -383,6 +464,8 @@ static void run_test(data_t *data)
>  		expected = "screen GREEN";
>  		break;
>  	}
> +
> +	assert_timestamp_exit(data, &pre);
>  	manual(expected);
>  	is_not_equal_crc(data, ref_crc);
>  }
> @@ -585,6 +668,7 @@ int main(int argc, char *argv[])
>  	}
>  
>  	igt_fixture {
> +		igt_sysfs_set(data.debugfs_fd, "i915_edp_psr_debug", "0");
>  		close(data.debugfs_fd);
>  		drm_intel_bufmgr_destroy(data.bufmgr);
>  		display_fini(&data);
> -- 
> 2.14.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2018-04-12 12:56 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-11  2:37 [igt-dev] [PATCH i-g-t 01/20] tests/psr: Print the reason for skipping when sink lacks PSR support Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 02/20] tests/psr: Remove "psr_" prefix from basic and drrs subtests Dhinakaran Pandiyan
2018-04-13 10:57   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 03/20] tests/psr: Rename psr_active() to psr_enabled() Dhinakaran Pandiyan
2018-04-13 10:58   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 04/20] tests/psr: Store the debugfs file descriptor Dhinakaran Pandiyan
2018-04-13 10:58   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 05/20] tests/psr: Assert sink CRC length and make use of igt_sysfs_read() Dhinakaran Pandiyan
2018-04-13 10:59   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 06/20] tests/psr: Optimize check for green frame Dhinakaran Pandiyan
2018-04-13 10:59   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 07/20] tests/psr: Kill MMAP_GTT_WAITING Dhinakaran Pandiyan
2018-04-12 11:11   ` Katarzyna Dec
2018-04-16 21:44     ` Pandiyan, Dhinakaran
2018-04-23 23:01       ` Rodrigo Vivi
2018-04-16 22:08     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 08/20] tests/psr: Merge PSR dpms and suspend variants Dhinakaran Pandiyan
2018-04-12 11:20   ` Katarzyna Dec
2018-04-16 21:46     ` Pandiyan, Dhinakaran
2018-04-17  7:58       ` Katarzyna Dec
2018-04-23 23:03       ` Rodrigo Vivi
2018-04-16 22:10     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 09/20] tests/psr: Check for PSR entry more often and only for a second Dhinakaran Pandiyan
2018-04-12 11:25   ` Katarzyna Dec
2018-04-16 22:43     ` Dhinakaran Pandiyan
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 10/20] tests/psr: Remove delay between dpms toggle Dhinakaran Pandiyan
2018-04-12 11:26   ` Katarzyna Dec
2018-04-13  0:24     ` Dhinakaran Pandiyan
2018-04-13 11:05       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 11/20] tests/psr: Check for drrs status only after checking for PSR Dhinakaran Pandiyan
2018-04-13 11:21   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 12/20] tests/sink_crc_basic: Debug print CRC values Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 13/20] tests/psr: Get rid of global variable running_with_psr_disabled Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 14/20] tests/psr: Make testing with sink CRC non-default Dhinakaran Pandiyan
2018-04-13 11:22   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 15/20] tests/psr: Eliminate storing pointers for igt_plane_type Dhinakaran Pandiyan
2018-04-13 11:23   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 16/20] tests/psr: Pass data_t pointer to dpms_off_on Dhinakaran Pandiyan
2018-04-13 11:23   ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 17/20] tests/psr: Prepare for using timestamps Dhinakaran Pandiyan
2018-04-12 12:50   ` Katarzyna Dec
2018-04-13  0:21     ` Dhinakaran Pandiyan
2018-04-13 11:33       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 18/20] tests/psr: Check for timestamp support Dhinakaran Pandiyan
2018-04-12 12:52   ` Katarzyna Dec
2018-04-13  0:13     ` Dhinakaran Pandiyan
2018-04-13  0:13       ` Dhinakaran Pandiyan
2018-04-13 11:34       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 19/20] tests/psr: Test PSR using interrupt timestamps Dhinakaran Pandiyan
2018-04-12 12:56   ` Katarzyna Dec [this message]
2018-04-16 22:49     ` [igt-dev] [PATCH i-g-t v2] " Dhinakaran Pandiyan
2018-04-17 12:53       ` Katarzyna Dec
2018-04-11  2:37 ` [igt-dev] [PATCH i-g-t 20/20] tests/psr: Add more PSR subtests to fast feedback list Dhinakaran Pandiyan
2018-04-11  8:42   ` Petri Latvala
2018-04-11 16:14     ` Pandiyan, Dhinakaran
2018-04-13  9:16       ` Petri Latvala
2018-04-15  1:13         ` Dhinakaran Pandiyan
2018-04-23 23:06           ` Rodrigo Vivi
2018-04-23 23:58             ` Dhinakaran Pandiyan
2018-04-24  9:34               ` Petri Latvala
2018-04-24 15:32                 ` Saarinen, Jani
2018-04-24 17:48                   ` Dhinakaran Pandiyan
2018-04-24 21:28                     ` Rodrigo Vivi
2018-04-25  8:34                       ` Petri Latvala
2018-04-25 17:56                         ` Pandiyan, Dhinakaran
2018-04-25 20:15                           ` Rodrigo Vivi
2018-04-11  3:07 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/20] tests/psr: Print the reason for skipping when sink lacks PSR support Patchwork
2018-04-11  3:53 ` [igt-dev] ✗ Fi.CI.IGT: warning " Patchwork
2018-04-12 11:08 ` [igt-dev] [PATCH i-g-t 01/20] " Katarzyna Dec
2018-04-12 13:03 ` Katarzyna Dec
2018-04-13 10:57 ` Katarzyna Dec
2018-04-16 23:10 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t,01/20] tests/psr: Print the reason for skipping when sink lacks PSR support (rev2) Patchwork
2018-04-25 21:00 ` Patchwork
2018-04-26  8:40   ` Petri Latvala
2018-05-09 23:41     ` Dhinakaran Pandiyan
2018-04-26  9:58 ` Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180412125612.GJ20211@kdec5-desk.ger.corp.intel.com \
    --to=katarzyna.dec@intel.com \
    --cc=dhinakaran.pandiyan@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.