In some cases we observed that forcewake isn't kept after resume and then RC6 residency is not constant. References: HSD#1804921797 Cc: Arkadiusz Hiler <arkadiusz.hiler@xxxxxxxxx> Cc: Michal Winiarski <michal.winiarski@xxxxxxxxx> Cc: Lukasz Fiedorowicz <lukasz.fiedorowicz@xxxxxxxxx> Signed-off-by: Ewelina Musial <ewelina.musial@xxxxxxxxx> --- tests/pm_rc6_residency.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tests/pm_rc6_residency.c b/tests/pm_rc6_residency.c index bdb9747..4e61326 100644 --- a/tests/pm_rc6_residency.c +++ b/tests/pm_rc6_residency.c @@ -165,6 +165,44 @@ static void measure_residencies(int devid, unsigned int rc6_mask, res->rc6 += res->rc6p; } +enum sleep_state { NOSLEEP, SUSPEND, HIBERNATE }; +static void test_rc6_forcewake(enum sleep_state sleep_state) +{ + int fd, fw_fd; + unsigned long residency_pre, residency_post; + + fd = drm_open_driver(DRIVER_INTEL); + igt_assert_lte(0, fd); + + fw_fd = igt_open_forcewake_handle(fd); + igt_assert_lte(0, fw_fd); + + switch (sleep_state) { + case NOSLEEP: + break; + case SUSPEND: + igt_system_suspend_autoresume(SUSPEND_STATE_MEM, + SUSPEND_TEST_NONE); + break; + case HIBERNATE: + igt_system_suspend_autoresume(SUSPEND_STATE_DISK, + SUSPEND_TEST_NONE); + break; + } + + sleep(1); // time to fully resume + + // forcewake should keep residency constant after resume + residency_pre = read_rc6_residency("rc6"); + sleep(SLEEP_DURATION); + residency_post = read_rc6_residency("rc6"); + + igt_assert_eq(residency_pre, residency_post); + + close(fw_fd); + close(fd); +} + igt_main { unsigned int rc6_mask; @@ -209,4 +247,19 @@ igt_main residency_accuracy(res.rc6pp, res.duration, "rc6pp"); } + igt_subtest("rc6-forcewake") { + igt_skip_on(!(rc6_mask & RC6_ENABLED)); + + test_rc6_forcewake(NOSLEEP); + } + igt_subtest("rc6-forcewake-suspend") { + igt_skip_on(!(rc6_mask & RC6_ENABLED)); + + test_rc6_forcewake(SUSPEND); + } + igt_subtest("rc6-forcewake-hibernate") { + igt_skip_on(!(rc6_mask & RC6_ENABLED)); + + test_rc6_forcewake(HIBERNATE); + } } -- 2.9.3 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx