[igt-dev] [PATCH i-g-t 6/6] DO_NOT_MERGE: Debug patch to cover DC IGT test.

Anshuman Gupta
2019-06-18T18:01:18Z

This patch make sure DC state IGT patches run on CI Bat test.
This patch print package c state counter also.

Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
tests/i915/i915_pm_dc.c | 51 +++++++++++++++++++++++++++
tests/intel-ci/fast-feedback.testlist | 4 +++
2 files changed, 55 insertions(+)

diff --git a/tests/i915/i915_pm_dc.c b/tests/i915/i915_pm_dc.c
index 576e32c7..c672e72e 100644
--- a/tests/i915/i915_pm_dc.c
+++ b/tests/i915/i915_pm_dc.c
@@ -61,6 +61,8 @@ typedef struct {
} data_t;

int msr_fd;
+int pmc_debugfs;
+bool pmc_loaded;

bool dc_state_wait_entry(int drm_fd, int dc_flag, int prev_dc_count);
void check_dc_counter(int drm_fd, int dc_flag, uint32_t prev_dc_count);
@@ -92,6 +94,49 @@ static bool supports_pc8_plus_residencies(void)
return true;
}

+static bool setup_pmc(void)
+{
+ const char *debugfs_root;
+ char path[200];
+
+ /* Make sure our intel_pmc_core module is loaded. */
+ pmc_loaded = igt_kmod_is_loaded("intel_pmc_core");
+
+ if (!pmc_loaded)
+ pmc_loaded = igt_kmod_load("intel_pmc_core", NULL) == 0;
+
+ if (!pmc_loaded) {
+ igt_info("intel_pmc_core module not loaded\n");
+ return;
+ }
+
+ debugfs_root = igt_debugfs_mount();
+ igt_assert(debugfs_root);
+ snprintf(path, sizeof(path), "%s/pmc_core", debugfs_root);
+ pmc_debugfs = open(path, O_RDONLY);
+ igt_require(pmc_debugfs != -1);
+}
+
+static void dump_file(int dir, const char *filename)
+{
+ char *contents;
+
+ contents = igt_sysfs_get(dir, filename);
+ if (!contents)
+ return;
+
+ igt_info("%s:\n%s\n", filename, contents);
+ free(contents);
+}
+
+static void pmc_dump_file(int fd, const char *file)
+{
+ if (!pmc_loaded)
+ return;
+
+ dump_file(fd, file);
+}
+
static void setup_output(data_t *data)
{
igt_display_t *display = &data->display;
@@ -295,6 +340,9 @@ int main(int argc, char *argv[])
msr_fd = open("/dev/cpu/0/msr", O_RDONLY);
igt_assert_f(msr_fd >= 0,
"Can't open /dev/cpu/0/msr.\n");
+ setup_pmc();
+ igt_info("Initial PC state residencies before test\n");
+ pmc_dump_file(pmc_debugfs, "package_cstate_show");
}

igt_subtest("dc5-psr") {
@@ -328,7 +376,10 @@ int main(int argc, char *argv[])
}

igt_fixture {
+ igt_info("PC state residencies after test\n");
+ pmc_dump_file(pmc_debugfs, "package_cstate_show");
close(data.debugfs_fd);
+ close(pmc_debugfs);
display_fini(&data);
}

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index 9b711946..f28c306d 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -229,6 +229,10 @@ igt@kms_setmode@basic-clone-single-crtc
igt@i915_pm_backlight@basic-brightness
igt@i915_pm_rpm@basic-pci-d3-state
igt@i915_pm_rpm@basic-rte
+igt@i915_pm_dc@dc5-psr
+igt@i915_pm_dc@dc6-psr
+igt@i915_pm_dc@dc5-dpms
+igt@i915_pm_dc@dc6-dpms
igt@i915_pm_rps@basic-api
igt@prime_busy@basic-after-default
igt@prime_busy@basic-before-default