[igt-dev] [PATCH i-g-t 3/7] lib/igt_psr: modified psr_active_check for pr compatability
Hogander, Jouni
jouni.hogander at intel.com
Tue Oct 31 11:38:23 UTC 2023
On Tue, 2023-10-31 at 13:39 +0530, Kunal Joshi wrote:
> Whenever PR is active, system will be in SRDENT,
> modify psr_active_check to accomadte PR_MODE
>
> Cc: Jouni Högander <jouni.hogander at intel.com>
> Cc: Animesh Manna <animesh.manna at intel.com>
> Cc: Arun R Murthy <arun.r.murthy at intel.com>
> Signed-off-by: Kunal Joshi <kunal1.joshi at intel.com>
Reviewed-by: Jouni Högander <jouni.hogander at intel.com>
> ---
> lib/igt_psr.c | 24 +++++++++++++++---------
> lib/igt_psr.h | 6 +++---
> tests/intel/kms_dirtyfb.c | 2 +-
> tests/intel/kms_fbcon_fbt.c | 4 ++--
> tests/intel/kms_frontbuffer_tracking.c | 4 ++--
> tests/intel/kms_pm_dc.c | 6 +++---
> tests/intel/kms_psr.c | 4 ++--
> tests/intel/kms_psr2_sf.c | 10 +++++-----
> tests/intel/kms_psr2_su.c | 4 ++--
> tests/intel/kms_psr_stress_test.c | 2 +-
> 10 files changed, 36 insertions(+), 30 deletions(-)
>
> diff --git a/lib/igt_psr.c b/lib/igt_psr.c
> index aa3ca9ddb..665b28a76 100644
> --- a/lib/igt_psr.c
> +++ b/lib/igt_psr.c
> @@ -47,13 +47,19 @@ bool psr2_selective_fetch_check(int debugfs_fd)
> return strstr(buf, "PSR2 selective fetch: enabled");
> }
>
> -static bool psr_active_check(int debugfs_fd, enum psr_mode mode)
> +static bool psr_active_check(int debugfs_fd, enum psr_mode mode,
> igt_output_t *output)
> {
> + char debugfs_file[128] = {0};
> char buf[PSR_STATUS_MAX_LEN];
> - const char *state = mode == PSR_MODE_1 ? "SRDENT" :
> "DEEP_SLEEP";
> + const char *state = mode == PSR_MODE_1 || PR_MODE ? "SRDENT"
> : "DEEP_SLEEP";
> int ret;
>
> - ret = igt_debugfs_simple_read(debugfs_fd,
> "i915_edp_psr_status",
> + if (output)
> + sprintf(debugfs_file, "%s/i915_psr_status", output-
> >name);
> + else
> + sprintf(debugfs_file, "%s", "i915_edp_psr_status");
> +
> + ret = igt_debugfs_simple_read(debugfs_fd, debugfs_file,
> buf, sizeof(buf));
> if (ret < 0) {
> igt_info("Could not read i915_edp_psr_status: %s\n",
> @@ -69,19 +75,19 @@ static bool psr_active_check(int debugfs_fd, enum
> psr_mode mode)
> /*
> * For PSR1, we wait until PSR is active. We wait until DEEP_SLEEP
> for PSR2.
> */
> -bool psr_wait_entry(int debugfs_fd, enum psr_mode mode)
> +bool psr_wait_entry(int debugfs_fd, enum psr_mode mode, igt_output_t
> *output)
> {
> - return igt_wait(psr_active_check(debugfs_fd, mode), 500, 20);
> + return igt_wait(psr_active_check(debugfs_fd, mode, output),
> 500, 20);
> }
>
> -bool psr_wait_update(int debugfs_fd, enum psr_mode mode)
> +bool psr_wait_update(int debugfs_fd, enum psr_mode mode,
> igt_output_t *output)
> {
> - return igt_wait(!psr_active_check(debugfs_fd, mode), 40, 10);
> + return igt_wait(!psr_active_check(debugfs_fd, mode, output),
> 40, 10);
> }
>
> -bool psr_long_wait_update(int debugfs_fd, enum psr_mode mode)
> +bool psr_long_wait_update(int debugfs_fd, enum psr_mode mode,
> igt_output_t *output)
> {
> - return igt_wait(!psr_active_check(debugfs_fd, mode), 500,
> 10);
> + return igt_wait(!psr_active_check(debugfs_fd, mode, output),
> 500, 10);
> }
>
> static ssize_t psr_write(int debugfs_fd, const char *buf)
> diff --git a/lib/igt_psr.h b/lib/igt_psr.h
> index e213b05e9..a30330e6c 100644
> --- a/lib/igt_psr.h
> +++ b/lib/igt_psr.h
> @@ -42,9 +42,9 @@ enum psr_mode {
>
> bool psr_disabled_check(int debugfs_fd);
> bool psr2_selective_fetch_check(int debugfs_fd);
> -bool psr_wait_entry(int debugfs_fd, enum psr_mode mode);
> -bool psr_wait_update(int debugfs_fd, enum psr_mode mode);
> -bool psr_long_wait_update(int debugfs_fd, enum psr_mode mode);
> +bool psr_wait_entry(int debugfs_fd, enum psr_mode mode, igt_output_t
> *output);
> +bool psr_wait_update(int debugfs_fd, enum psr_mode mode,
> igt_output_t *output);
> +bool psr_long_wait_update(int debugfs_fd, enum psr_mode mode,
> igt_output_t *output);
> bool psr_enable(int device, int debugfs_fd, enum psr_mode);
> bool psr_disable(int device, int debugfs_fd);
> bool psr_sink_support(int device, int debugfs_fd, enum psr_mode
> mode, igt_output_t *output);
> diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
> index f7ff1ac0b..b14cc8bec 100644
> --- a/tests/intel/kms_dirtyfb.c
> +++ b/tests/intel/kms_dirtyfb.c
> @@ -135,7 +135,7 @@ static void check_feature(data_t *data)
> "FBC still disabled");
> break;
> case FEATURE_PSR:
> - igt_assert_f(psr_wait_entry(data->debugfs_fd,
> PSR_MODE_1),
> + igt_assert_f(psr_wait_entry(data->debugfs_fd,
> PSR_MODE_1, NULL),
> "PSR still disabled\n");
> break;
> case FEATURE_DRRS:
> diff --git a/tests/intel/kms_fbcon_fbt.c
> b/tests/intel/kms_fbcon_fbt.c
> index a7f24e669..4078309d9 100644
> --- a/tests/intel/kms_fbcon_fbt.c
> +++ b/tests/intel/kms_fbcon_fbt.c
> @@ -253,7 +253,7 @@ static void psr_print_status(int debugfs_fd)
>
> static bool psr_wait_until_enabled(int debugfs_fd)
> {
> - bool r = psr_wait_entry(debugfs_fd, PSR_MODE_1);
> + bool r = psr_wait_entry(debugfs_fd, PSR_MODE_1, NULL);
>
> psr_print_status(debugfs_fd);
> return r;
> @@ -274,7 +274,7 @@ static bool psr_supported_on_chipset(int device,
> int debugfs_fd)
>
> static bool psr_wait_until_update(struct drm_info *drm)
> {
> - return psr_long_wait_update(drm->debugfs_fd, PSR_MODE_1);
> + return psr_long_wait_update(drm->debugfs_fd, PSR_MODE_1,
> NULL);
> }
>
> static void disable_features(int device, int debugfs_fd)
> diff --git a/tests/intel/kms_frontbuffer_tracking.c
> b/tests/intel/kms_frontbuffer_tracking.c
> index 2d588e836..0a9033fad 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -1563,10 +1563,10 @@ static void do_status_assertions(int flags)
> }
>
> if (flags & ASSERT_PSR_ENABLED)
> - igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1),
> + igt_assert_f(psr_wait_entry(drm.debugfs, PSR_MODE_1,
> NULL),
> "PSR still disabled\n");
> else if (flags & ASSERT_PSR_DISABLED)
> - igt_assert_f(psr_wait_update(drm.debugfs,
> PSR_MODE_1),
> + igt_assert_f(psr_wait_update(drm.debugfs, PSR_MODE_1,
> NULL),
> "PSR still enabled\n");
> }
>
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index e5daacb84..a3c7c4018 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -382,7 +382,7 @@ static void setup_dc3co(data_t *data)
> {
> data->op_psr_mode = PSR_MODE_2;
> psr_enable(data->drm_fd, data->debugfs_fd, data-
> >op_psr_mode);
> - igt_require_f(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode),
> + igt_require_f(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode, NULL),
> "PSR2 is not enabled\n");
> }
>
> @@ -418,7 +418,7 @@ static void test_dc_state_psr(data_t *data, int
> dc_flag)
> dc_counter_before_psr = read_dc_counter(data->debugfs_fd,
> dc_flag);
> setup_output(data);
> setup_primary(data);
> - igt_assert(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode));
> + igt_assert(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode, NULL));
> check_dc_counter(data, dc_flag, dc_counter_before_psr);
> cleanup_dc_psr(data);
> }
> @@ -624,7 +624,7 @@ static void test_pkgc_state_psr(data_t *data)
> prev_value = read_pkgc_counter(data->debugfs_root_fd);
> setup_output(data);
> setup_primary(data);
> - igt_assert(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode));
> + igt_assert(psr_wait_entry(data->debugfs_fd, data-
> >op_psr_mode, NULL));
> psr_dpms(data, DRM_MODE_DPMS_OFF);
> igt_wait((cur_value = read_pkgc_counter(data-
> >debugfs_root_fd)) > prev_value,
> timeout_sec * 1000, 100);
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index 260095aec..8485e9894 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -441,7 +441,7 @@ static bool psr_wait_entry_if_enabled(data_t
> *data)
> if (data->with_psr_disabled)
> return true;
>
> - return psr_wait_entry(data->debugfs_fd, data->op_psr_mode);
> + return psr_wait_entry(data->debugfs_fd, data->op_psr_mode,
> data->output);
> }
>
> static bool psr_wait_update_if_enabled(data_t *data)
> @@ -449,7 +449,7 @@ static bool psr_wait_update_if_enabled(data_t
> *data)
> if (data->with_psr_disabled)
> return true;
>
> - return psr_wait_update(data->debugfs_fd, data->op_psr_mode);
> + return psr_wait_update(data->debugfs_fd, data->op_psr_mode,
> data->output);
> }
>
> static bool psr_enable_if_enabled(data_t *data)
> diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
> index 2d05f1110..9f5186eee 100644
> --- a/tests/intel/kms_psr2_sf.c
> +++ b/tests/intel/kms_psr2_sf.c
> @@ -677,7 +677,7 @@ static void damaged_plane_move(data_t *data)
>
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> - igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> + igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> NULL));
>
> expected_output(data);
> }
> @@ -777,7 +777,7 @@ static void plane_move_continuous(data_t *data)
> {
> int target_x, target_y;
>
> - igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> + igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> NULL));
>
> get_target_coords(data, &target_x, &target_y);
>
> @@ -854,7 +854,7 @@ static void damaged_plane_update(data_t *data)
> igt_plane_set_position(data->test_plane, 0, 0);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> - igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> + igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> NULL));
>
> expected_output(data);
> }
> @@ -863,7 +863,7 @@ static void run(data_t *data)
> {
> int i;
>
> - igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> + igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> NULL));
>
> data->screen_changes = 0;
>
> @@ -941,7 +941,7 @@ static int check_psr2_support(data_t *data)
> int status;
>
> prepare(data);
> - status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> + status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2, NULL);
> cleanup(data);
>
> return status;
> diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
> index 2f89de435..3506409b7 100644
> --- a/tests/intel/kms_psr2_su.c
> +++ b/tests/intel/kms_psr2_su.c
> @@ -258,7 +258,7 @@ static void run(data_t *data, igt_output_t
> *output)
> {
> bool result = false;
>
> - igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> + igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> output));
>
> for (data->screen_changes = 0;
> data->screen_changes < MAX_SCREEN_CHANGES && !result;
> @@ -304,7 +304,7 @@ static int check_psr2_support(data_t *data, enum
> pipe pipe)
> igt_output_set_pipe(output, pipe);
>
> prepare(data, output);
> - status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> + status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2,
> output);
> cleanup(data, output);
>
> return status;
> diff --git a/tests/intel/kms_psr_stress_test.c
> b/tests/intel/kms_psr_stress_test.c
> index beded3b94..e3b21603a 100644
> --- a/tests/intel/kms_psr_stress_test.c
> +++ b/tests/intel/kms_psr_stress_test.c
> @@ -232,7 +232,7 @@ static void prepare(data_t *data)
>
> data->initial_state = psr_get_mode(data->debugfs_fd);
> igt_require(data->initial_state != PSR_DISABLED);
> - igt_require(psr_wait_entry(data->debugfs_fd, data-
> >initial_state));
> + igt_require(psr_wait_entry(data->debugfs_fd, data-
> >initial_state, NULL));
> }
>
> static void cleanup(data_t *data)
More information about the igt-dev
mailing list