All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anshuman Gupta <anshuman.gupta@intel.com>
To: intel-gfx@lists.freedesktop.org, igt-dev@lists.freedesktop.org
Subject: [PATCH i-g-t 1/5] lib/igt_pm: igt lib helper routines to support DC5/6 tests
Date: Wed, 13 Mar 2019 23:02:18 +0530	[thread overview]
Message-ID: <1552498342-6133-2-git-send-email-anshuman.gupta@intel.com> (raw)
In-Reply-To: <1552498342-6133-1-git-send-email-anshuman.gupta@intel.com>

From: Jyoti Yadav <jyoti.r.yadav@intel.com>

dmc_loaded() will be used by new test i915_pm_dc.c which will validate
Display C States. So moving the same to igt_pm library.
Introduced igt_disable_runtime_pm() inorder to disable runtime suspend
for the function which support dc9.

v2: Simplify the comment section.
v3: Remove . from the subject line.
v4: Rebased, resolve conflicts in pm_rpm.c
    Included patch set version change log.
v5: Listing actual change in patch set changelog to make review easier.
v6: igt's lib added support for disabling runtime suspend, change in commit log.
    rebased due to test name pm_rpm changed to i915_pm_rpm.

Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
 lib/igt_pm.c             | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_pm.h             |  2 ++
 tests/i915/i915_pm_rpm.c | 17 +----------------
 3 files changed, 50 insertions(+), 16 deletions(-)

diff --git a/lib/igt_pm.c b/lib/igt_pm.c
index 4902723..0ed566f 100644
--- a/lib/igt_pm.c
+++ b/lib/igt_pm.c
@@ -38,6 +38,7 @@
 #include "drmtest.h"
 #include "igt_pm.h"
 #include "igt_aux.h"
+#include "igt_sysfs.h"
 
 /**
  * SECTION:igt_pm
@@ -486,6 +487,7 @@ void igt_restore_runtime_pm(void)
 	igt_pm_audio_restore_runtime_pm();
 }
 
+
 static void __igt_pm_runtime_exit_handler(int sig)
 {
 	__igt_restore_runtime_pm();
@@ -577,6 +579,24 @@ bool igt_setup_runtime_pm(void)
 	return true;
 }
 
+bool igt_disable_runtime_pm(void)
+{
+	int fd;
+	ssize_t size;
+	char buf[6];
+
+	/* We know we support runtime PM, let's try to disable it now. */
+	fd = open(POWER_DIR "/control", O_RDWR);
+	igt_assert_f(fd >= 0, "Can't open " POWER_DIR "/control\n");
+	size = write(fd, "on\n", 3);
+	igt_assert(size == 3);
+	lseek(fd, 0, SEEK_SET);
+	size = read(fd, buf, ARRAY_SIZE(buf));
+	igt_assert(size == 3);
+	igt_assert(strncmp(buf, "on\n", 3) == 0);
+	close(fd);
+	return true;
+}
 /**
  * igt_get_runtime_pm_status:
  *
@@ -620,3 +640,30 @@ bool igt_wait_for_pm_status(enum igt_runtime_pm_status status)
 {
 	return igt_wait(igt_get_runtime_pm_status() == status, 10000, 100);
 }
+
+/**
+ * dmc_loaded:
+ * @debugfs: fd to the debugfs dir.
+
+ * Check whether DMC FW is loaded or not. DMC FW is require for few Display C
+ * states like DC5 and DC6. FW does the Context Save and Restore during Display
+ * C States entry and exit.
+ *
+ * Returns:
+ * True if DMC FW is loaded otherwise false.
+ */
+bool igt_pm_dmc_loaded(int debugfs)
+{
+	igt_require(debugfs != -1);
+	char buf[15];
+	int len;
+
+	len = igt_sysfs_read(debugfs, "i915_dmc_info", buf, sizeof(buf) - 1);
+	if (len < 0)
+		return true; /* no CSR support, no DMC requirement */
+
+	buf[len] = '\0';
+
+	igt_info("DMC: %s\n", buf);
+	return strstr(buf, "fw loaded: yes");
+}
diff --git a/lib/igt_pm.h b/lib/igt_pm.h
index 10cc679..6c4617a 100644
--- a/lib/igt_pm.h
+++ b/lib/igt_pm.h
@@ -47,8 +47,10 @@ enum igt_runtime_pm_status {
 };
 
 bool igt_setup_runtime_pm(void);
+bool igt_disable_runtime_pm(void);
 void igt_restore_runtime_pm(void);
 enum igt_runtime_pm_status igt_get_runtime_pm_status(void);
 bool igt_wait_for_pm_status(enum igt_runtime_pm_status status);
+bool igt_pm_dmc_loaded(int debugfs);
 
 #endif /* IGT_PM_H */
diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index be296f5..2d7cb5e 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -710,21 +710,6 @@ static void setup_pc8(void)
 	has_pc8 = true;
 }
 
-static bool dmc_loaded(void)
-{
-	char buf[15];
-	int len;
-
-	len = igt_sysfs_read(debugfs, "i915_dmc_info", buf, sizeof(buf) - 1);
-	if (len < 0)
-	    return true; /* no CSR support, no DMC requirement */
-
-	buf[len] = '\0';
-
-	igt_info("DMC: %s\n", buf);
-	return strstr(buf, "fw loaded: yes");
-}
-
 static void dump_file(int dir, const char *filename)
 {
 	char *contents;
@@ -761,7 +746,7 @@ static bool setup_environment(void)
 	igt_info("Runtime PM support: %d\n", has_runtime_pm);
 	igt_info("PC8 residency support: %d\n", has_pc8);
 	igt_require(has_runtime_pm);
-	igt_require(dmc_loaded());
+	igt_require(igt_pm_dmc_loaded(debugfs));
 
 out:
 	disable_all_screens(&ms_data);
-- 
2.7.4

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

WARNING: multiple messages have this Message-ID (diff)
From: Anshuman Gupta <anshuman.gupta@intel.com>
To: intel-gfx@lists.freedesktop.org, igt-dev@lists.freedesktop.org
Cc: jyoti.r.yadav@intel.com
Subject: [igt-dev] [PATCH i-g-t 1/5] lib/igt_pm: igt lib helper routines to support DC5/6 tests
Date: Wed, 13 Mar 2019 23:02:18 +0530	[thread overview]
Message-ID: <1552498342-6133-2-git-send-email-anshuman.gupta@intel.com> (raw)
In-Reply-To: <1552498342-6133-1-git-send-email-anshuman.gupta@intel.com>

From: Jyoti Yadav <jyoti.r.yadav@intel.com>

dmc_loaded() will be used by new test i915_pm_dc.c which will validate
Display C States. So moving the same to igt_pm library.
Introduced igt_disable_runtime_pm() inorder to disable runtime suspend
for the function which support dc9.

v2: Simplify the comment section.
v3: Remove . from the subject line.
v4: Rebased, resolve conflicts in pm_rpm.c
    Included patch set version change log.
v5: Listing actual change in patch set changelog to make review easier.
v6: igt's lib added support for disabling runtime suspend, change in commit log.
    rebased due to test name pm_rpm changed to i915_pm_rpm.

Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
 lib/igt_pm.c             | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_pm.h             |  2 ++
 tests/i915/i915_pm_rpm.c | 17 +----------------
 3 files changed, 50 insertions(+), 16 deletions(-)

diff --git a/lib/igt_pm.c b/lib/igt_pm.c
index 4902723..0ed566f 100644
--- a/lib/igt_pm.c
+++ b/lib/igt_pm.c
@@ -38,6 +38,7 @@
 #include "drmtest.h"
 #include "igt_pm.h"
 #include "igt_aux.h"
+#include "igt_sysfs.h"
 
 /**
  * SECTION:igt_pm
@@ -486,6 +487,7 @@ void igt_restore_runtime_pm(void)
 	igt_pm_audio_restore_runtime_pm();
 }
 
+
 static void __igt_pm_runtime_exit_handler(int sig)
 {
 	__igt_restore_runtime_pm();
@@ -577,6 +579,24 @@ bool igt_setup_runtime_pm(void)
 	return true;
 }
 
+bool igt_disable_runtime_pm(void)
+{
+	int fd;
+	ssize_t size;
+	char buf[6];
+
+	/* We know we support runtime PM, let's try to disable it now. */
+	fd = open(POWER_DIR "/control", O_RDWR);
+	igt_assert_f(fd >= 0, "Can't open " POWER_DIR "/control\n");
+	size = write(fd, "on\n", 3);
+	igt_assert(size == 3);
+	lseek(fd, 0, SEEK_SET);
+	size = read(fd, buf, ARRAY_SIZE(buf));
+	igt_assert(size == 3);
+	igt_assert(strncmp(buf, "on\n", 3) == 0);
+	close(fd);
+	return true;
+}
 /**
  * igt_get_runtime_pm_status:
  *
@@ -620,3 +640,30 @@ bool igt_wait_for_pm_status(enum igt_runtime_pm_status status)
 {
 	return igt_wait(igt_get_runtime_pm_status() == status, 10000, 100);
 }
+
+/**
+ * dmc_loaded:
+ * @debugfs: fd to the debugfs dir.
+
+ * Check whether DMC FW is loaded or not. DMC FW is require for few Display C
+ * states like DC5 and DC6. FW does the Context Save and Restore during Display
+ * C States entry and exit.
+ *
+ * Returns:
+ * True if DMC FW is loaded otherwise false.
+ */
+bool igt_pm_dmc_loaded(int debugfs)
+{
+	igt_require(debugfs != -1);
+	char buf[15];
+	int len;
+
+	len = igt_sysfs_read(debugfs, "i915_dmc_info", buf, sizeof(buf) - 1);
+	if (len < 0)
+		return true; /* no CSR support, no DMC requirement */
+
+	buf[len] = '\0';
+
+	igt_info("DMC: %s\n", buf);
+	return strstr(buf, "fw loaded: yes");
+}
diff --git a/lib/igt_pm.h b/lib/igt_pm.h
index 10cc679..6c4617a 100644
--- a/lib/igt_pm.h
+++ b/lib/igt_pm.h
@@ -47,8 +47,10 @@ enum igt_runtime_pm_status {
 };
 
 bool igt_setup_runtime_pm(void);
+bool igt_disable_runtime_pm(void);
 void igt_restore_runtime_pm(void);
 enum igt_runtime_pm_status igt_get_runtime_pm_status(void);
 bool igt_wait_for_pm_status(enum igt_runtime_pm_status status);
+bool igt_pm_dmc_loaded(int debugfs);
 
 #endif /* IGT_PM_H */
diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index be296f5..2d7cb5e 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -710,21 +710,6 @@ static void setup_pc8(void)
 	has_pc8 = true;
 }
 
-static bool dmc_loaded(void)
-{
-	char buf[15];
-	int len;
-
-	len = igt_sysfs_read(debugfs, "i915_dmc_info", buf, sizeof(buf) - 1);
-	if (len < 0)
-	    return true; /* no CSR support, no DMC requirement */
-
-	buf[len] = '\0';
-
-	igt_info("DMC: %s\n", buf);
-	return strstr(buf, "fw loaded: yes");
-}
-
 static void dump_file(int dir, const char *filename)
 {
 	char *contents;
@@ -761,7 +746,7 @@ static bool setup_environment(void)
 	igt_info("Runtime PM support: %d\n", has_runtime_pm);
 	igt_info("PC8 residency support: %d\n", has_pc8);
 	igt_require(has_runtime_pm);
-	igt_require(dmc_loaded());
+	igt_require(igt_pm_dmc_loaded(debugfs));
 
 out:
 	disable_all_screens(&ms_data);
-- 
2.7.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2019-03-13 17:32 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-13 17:32 [PATCH i-g-t 0/5] DC states igt tests patch series v8 Anshuman Gupta
2019-03-13 17:32 ` [igt-dev] " Anshuman Gupta
2019-03-13 17:32 ` Anshuman Gupta [this message]
2019-03-13 17:32   ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_pm: igt lib helper routines to support DC5/6 tests Anshuman Gupta
2019-03-15 10:52   ` Imre Deak
2019-03-15 10:52     ` [igt-dev] " Imre Deak
2019-03-13 17:32 ` [PATCH i-g-t 2/5] tests/i915/i915_pm_dc: Added new test to verify Display C States Anshuman Gupta
2019-03-13 17:32   ` [igt-dev] " Anshuman Gupta
2019-03-13 17:32 ` [PATCH i-g-t 3/5] tests/i915/i915_pm_dc: Added test for DC6 during PSR Anshuman Gupta
2019-03-13 17:32   ` [igt-dev] " Anshuman Gupta
2019-03-13 17:32 ` [PATCH i-g-t 4/5] tests/i915/i915_pm_dc: Added test for DC5 during DPMS Anshuman Gupta
2019-03-13 17:32   ` [igt-dev] " Anshuman Gupta
2019-03-13 17:32 ` [PATCH i-g-t 5/5] tests/i915/i915_pm_dc: Added test for DC6 " Anshuman Gupta
2019-03-13 17:32   ` [igt-dev] " Anshuman Gupta
2019-03-13 19:17 ` [igt-dev] ✓ Fi.CI.BAT: success for DC states igt tests patch series (rev5) Patchwork
2019-03-14  2:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2019-03-18 12:27 [PATCH i-g-t 0/5] DC states igt tests patch series v9 Anshuman Gupta
2019-03-18 12:27 ` [PATCH i-g-t 1/5] lib/igt_pm: igt lib helper routines to support DC5/6 tests Anshuman Gupta
2019-03-07 17:30 [PATCH i-g-t 0/5] DC states igt tests patch series v7 Anshuman Gupta
2019-03-07 17:30 ` [PATCH i-g-t 1/5] lib/igt_pm: igt lib helper routines to support DC5/6 tests Anshuman Gupta

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=1552498342-6133-2-git-send-email-anshuman.gupta@intel.com \
    --to=anshuman.gupta@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=intel-gfx@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.