All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load
@ 2017-02-24 10:58 Radoslaw Szwichtenberg
  2017-02-24 10:58 ` [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test Radoslaw Szwichtenberg
  2017-02-24 11:34 ` [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Chris Wilson
  0 siblings, 2 replies; 4+ messages in thread
From: Radoslaw Szwichtenberg @ 2017-02-24 10:58 UTC (permalink / raw)
  To: intel-gfx

There is no point in using custom function if there lib counterpart.

Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Michal Winiarski <michal.winiarski@intel.com>
Signed-off-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
---
 tests/pm_rps.c | 79 +++++++++++-----------------------------------------------
 1 file changed, 14 insertions(+), 65 deletions(-)

diff --git a/tests/pm_rps.c b/tests/pm_rps.c
index 5a54d9d..7aa66a8 100644
--- a/tests/pm_rps.c
+++ b/tests/pm_rps.c
@@ -560,58 +560,18 @@ static void reset_gpu(void)
 	close(fd);
 }
 
-static uint32_t *make_busy(int fd, uint32_t handle)
+static void boost_freq(int fd, int *boost_freqs)
 {
-	const int gen = intel_gen(intel_get_drm_devid(fd));
-	struct drm_i915_gem_exec_object2 obj;
-	struct drm_i915_gem_relocation_entry reloc;
-	struct drm_i915_gem_execbuffer2 execbuf;
-	uint32_t *batch;
-	int i;
-
-	memset(&execbuf, 0, sizeof(execbuf));
-	execbuf.buffers_ptr = (uintptr_t)&obj;
-	execbuf.buffer_count = 1;
-
-	memset(&obj, 0, sizeof(obj));
-	obj.handle = handle;
-
-	obj.relocs_ptr = (uintptr_t)&reloc;
-	obj.relocation_count = 1;
-	memset(&reloc, 0, sizeof(reloc));
-
-	batch = gem_mmap__wc(fd, obj.handle, 0, 4096, PROT_WRITE);
-	gem_set_domain(fd, obj.handle,
-			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
-
-	reloc.target_handle = obj.handle; /* recurse */
-	reloc.presumed_offset = 0;
-	reloc.offset = sizeof(uint32_t);
-	reloc.delta = 0;
-	reloc.read_domains = I915_GEM_DOMAIN_COMMAND;
-	reloc.write_domain = 0;
-
-	i = 0;
-	batch[i] = MI_BATCH_BUFFER_START;
-	if (gen >= 8) {
-		batch[i] |= 1 << 8 | 1;
-		batch[++i] = 0;
-		batch[++i] = 0;
-	} else if (gen >= 6) {
-		batch[i] |= 1 << 8;
-		batch[++i] = 0;
-	} else {
-		batch[i] |= 2 << 6;
-		batch[++i] = 0;
-		if (gen < 4) {
-			batch[i] |= 1;
-			reloc.delta = 1;
-		}
-	}
-	i++;
+	int64_t timeout = 1;
+	int ring = -1;
+	igt_spin_t *load;
 
-	gem_execbuf(fd, &execbuf);
-	return batch;
+	load = igt_spin_batch_new(fd, ring, 0);
+	gem_wait(fd, load->handle, &timeout);
+	read_freqs(boost_freqs);
+	dump(boost_freqs);
+	igt_spin_batch_end(load);
+	igt_spin_batch_free(fd, load);
 }
 
 static void waitboost(bool reset)
@@ -619,15 +579,9 @@ static void waitboost(bool reset)
 	int pre_freqs[NUMFREQ];
 	int boost_freqs[NUMFREQ];
 	int post_freqs[NUMFREQ];
-	uint32_t *batch, handle;
-	int64_t timeout = 1;
 
 	int fd = drm_open_driver(DRIVER_INTEL);
 
-	/* When we wait upon the GPU, we want to temporarily boost it
-	 * to maximum.
-	 */
-
 	load_helper_run(LOW);
 
 	igt_debug("Apply low load...\n");
@@ -640,15 +594,10 @@ static void waitboost(bool reset)
 		sleep(1);
 	}
 
-	igt_debug("Wait for gpu...\n");
-	handle = gem_create(fd, 4096);
-	batch = make_busy(fd, handle);
-	gem_wait(fd, handle, &timeout);
-	read_freqs(boost_freqs);
-	dump(boost_freqs);
-	*batch = MI_BATCH_BUFFER_END;
-	munmap(batch, 4096);
-	gem_close(fd, handle);
+	/* When we wait upon the GPU, we want to temporarily boost it
+	 * to maximum.
+	 */
+	boost_freq(fd, boost_freqs);
 
 	igt_debug("Apply low load again...\n");
 	sleep(1);
-- 
2.9.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test
  2017-02-24 10:58 [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Radoslaw Szwichtenberg
@ 2017-02-24 10:58 ` Radoslaw Szwichtenberg
  2017-02-24 11:36   ` Chris Wilson
  2017-02-24 11:34 ` [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Chris Wilson
  1 sibling, 1 reply; 4+ messages in thread
From: Radoslaw Szwichtenberg @ 2017-02-24 10:58 UTC (permalink / raw)
  To: intel-gfx

Test verifies that frequency gets boosted to gt_boost_freq_mhz
even though gt_max_freq_mhz is lower than gt_boost_freq_mhz.

Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Michal Winiarski <michal.winiarski@intel.com>
Signed-off-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
---
 tests/pm_rps.c | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/tests/pm_rps.c b/tests/pm_rps.c
index 7aa66a8..3cbbeeb 100644
--- a/tests/pm_rps.c
+++ b/tests/pm_rps.c
@@ -50,6 +50,7 @@ enum {
 	RP0,
 	RP1,
 	RPn,
+	BOOST,
 	NUMFREQ
 };
 
@@ -60,7 +61,14 @@ struct junk {
 	const char *mode;
 	FILE *filp;
 } stuff[] = {
-	{ "cur", "r", NULL }, { "min", "rb+", NULL }, { "max", "rb+", NULL }, { "RP0", "r", NULL }, { "RP1", "r", NULL }, { "RPn", "r", NULL }, { NULL, NULL, NULL }
+	{ "cur", "r", NULL },
+	{ "min", "rb+", NULL },
+	{ "max", "rb+", NULL },
+	{ "RP0", "r", NULL },
+	{ "RP1", "r", NULL },
+	{ "RPn", "r", NULL },
+	{"boost", "rb+", NULL },
+	{ NULL, NULL, NULL }
 };
 
 static int readval(FILE *filp)
@@ -614,6 +622,27 @@ static void waitboost(bool reset)
 	close(fd);
 }
 
+static void waitboost_softlimit(void)
+{
+	int boost_freqs[NUMFREQ];
+	int fmid = (origfreqs[RPn] + origfreqs[RP0]) / 2;
+	int fd = drm_open_driver(DRIVER_INTEL);
+	fmid = get_hw_rounded_freq(fmid);
+
+	igt_debug("Set min and max to midpoint\n");
+	writeval(stuff[MIN].filp, fmid);
+	writeval(stuff[MAX].filp, fmid);
+
+	/* When we wait upon the GPU, we want to temporarily boost it
+	 * to maximum.
+	 */
+	boost_freq(fd, boost_freqs);
+
+	igt_assert_eq(boost_freqs[CUR], boost_freqs[BOOST]);
+
+	close(fd);
+}
+
 static void pm_rps_exit_handler(int sig)
 {
 	if (origfreqs[MIN] > readval(stuff[MAX].filp)) {
@@ -679,4 +708,6 @@ igt_main
 	igt_subtest("reset")
 		waitboost(true);
 
+	igt_subtest("waitboost-softlimit")
+		waitboost_softlimit();
 }
-- 
2.9.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load
  2017-02-24 10:58 [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Radoslaw Szwichtenberg
  2017-02-24 10:58 ` [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test Radoslaw Szwichtenberg
@ 2017-02-24 11:34 ` Chris Wilson
  1 sibling, 0 replies; 4+ messages in thread
From: Chris Wilson @ 2017-02-24 11:34 UTC (permalink / raw)
  To: Radoslaw Szwichtenberg; +Cc: intel-gfx

On Fri, Feb 24, 2017 at 11:58:52AM +0100, Radoslaw Szwichtenberg wrote:
> There is no point in using custom function if there lib counterpart.
> 
> Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> Cc: Michal Winiarski <michal.winiarski@intel.com>
> Signed-off-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
> ---
>  tests/pm_rps.c | 79 +++++++++++-----------------------------------------------
>  1 file changed, 14 insertions(+), 65 deletions(-)
> 
> diff --git a/tests/pm_rps.c b/tests/pm_rps.c
> index 5a54d9d..7aa66a8 100644
> --- a/tests/pm_rps.c
> +++ b/tests/pm_rps.c
> @@ -560,58 +560,18 @@ static void reset_gpu(void)
>  	close(fd);
>  }
>  
> -static uint32_t *make_busy(int fd, uint32_t handle)
> +static void boost_freq(int fd, int *boost_freqs)
>  {
> -	const int gen = intel_gen(intel_get_drm_devid(fd));
> -	struct drm_i915_gem_exec_object2 obj;
> -	struct drm_i915_gem_relocation_entry reloc;
> -	struct drm_i915_gem_execbuffer2 execbuf;
> -	uint32_t *batch;
> -	int i;
> -
> -	memset(&execbuf, 0, sizeof(execbuf));
> -	execbuf.buffers_ptr = (uintptr_t)&obj;
> -	execbuf.buffer_count = 1;
> -
> -	memset(&obj, 0, sizeof(obj));
> -	obj.handle = handle;
> -
> -	obj.relocs_ptr = (uintptr_t)&reloc;
> -	obj.relocation_count = 1;
> -	memset(&reloc, 0, sizeof(reloc));
> -
> -	batch = gem_mmap__wc(fd, obj.handle, 0, 4096, PROT_WRITE);
> -	gem_set_domain(fd, obj.handle,
> -			I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
> -
> -	reloc.target_handle = obj.handle; /* recurse */
> -	reloc.presumed_offset = 0;
> -	reloc.offset = sizeof(uint32_t);
> -	reloc.delta = 0;
> -	reloc.read_domains = I915_GEM_DOMAIN_COMMAND;
> -	reloc.write_domain = 0;
> -
> -	i = 0;
> -	batch[i] = MI_BATCH_BUFFER_START;
> -	if (gen >= 8) {
> -		batch[i] |= 1 << 8 | 1;
> -		batch[++i] = 0;
> -		batch[++i] = 0;
> -	} else if (gen >= 6) {
> -		batch[i] |= 1 << 8;
> -		batch[++i] = 0;
> -	} else {
> -		batch[i] |= 2 << 6;
> -		batch[++i] = 0;
> -		if (gen < 4) {
> -			batch[i] |= 1;
> -			reloc.delta = 1;
> -		}
> -	}
> -	i++;
> +	int64_t timeout = 1;
> +	int ring = -1;
> +	igt_spin_t *load;
>  
> -	gem_execbuf(fd, &execbuf);
> -	return batch;
> +	load = igt_spin_batch_new(fd, ring, 0);
> +	gem_wait(fd, load->handle, &timeout);
> +	read_freqs(boost_freqs);
> +	dump(boost_freqs);
> +	igt_spin_batch_end(load);
> +	igt_spin_batch_free(fd, load);

Ok, couldn't spot a problem with the conversion, but a little whitespace
wouldn't go amiss. At least a comment to remind us that it is a
"feature" of waiting that grants us a bost.

igt_spin_batch_end is redundant as _free will do it for you.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test
  2017-02-24 10:58 ` [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test Radoslaw Szwichtenberg
@ 2017-02-24 11:36   ` Chris Wilson
  0 siblings, 0 replies; 4+ messages in thread
From: Chris Wilson @ 2017-02-24 11:36 UTC (permalink / raw)
  To: Radoslaw Szwichtenberg; +Cc: intel-gfx

On Fri, Feb 24, 2017 at 11:58:53AM +0100, Radoslaw Szwichtenberg wrote:
> Test verifies that frequency gets boosted to gt_boost_freq_mhz
> even though gt_max_freq_mhz is lower than gt_boost_freq_mhz.

And the converse check would be good, that setting boost to min prevents
boosting.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-02-24 11:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-24 10:58 [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Radoslaw Szwichtenberg
2017-02-24 10:58 ` [PATCH i-g-t 2/2] tests/pm_rps: Add waitboost-softlimit test Radoslaw Szwichtenberg
2017-02-24 11:36   ` Chris Wilson
2017-02-24 11:34 ` [PATCH i-g-t 1/2] tests/pm_rps: Replace custom load function with dummy load Chris Wilson

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.