Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Hogander, Jouni" <jouni.hogander@intel.com>
To: "Joshi, Kunal1" <kunal1.joshi@intel.com>,
	"igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Cc: "Murthy, Arun R" <arun.r.murthy@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability
Date: Tue, 31 Oct 2023 10:40:00 +0000	[thread overview]
Message-ID: <092f55b945b50ae4634f2b8792f0190eef2859f9.camel@intel.com> (raw)
In-Reply-To: <20231031080949.1145422-3-kunal1.joshi@intel.com>

On Tue, 2023-10-31 at 13:39 +0530, Kunal Joshi wrote:
> New debugfs directory for all DP connectors will be added
> with below patch series
> https://patchwork.freedesktop.org/series/94470/
> 
> For DP Connectors
>         /sys/kernel/debug/dri/0/DP-x/i915_psr_status
> 
> For eDP Connectors
>         /sys/kernel/debug/dri/0/i915_edp_psr_status
>                         or
>         /sys/kernel/debug/dri/0/eDP-x/i915_psr_status
> 
> v2: reuse psr_sink_support (Jouni)
> 
> Cc: Jouni Högander <jouni.hogander@intel.com>
> Cc: Animesh Manna <animesh.manna@intel.com>
> Cc: Arun R Murthy <arun.r.murthy@intel.com>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
>  lib/igt_psr.c                          | 54 ++++++++++++++++++------
> --
>  lib/igt_psr.h                          |  3 +-
>  tests/intel/kms_dirtyfb.c              |  2 +-
>  tests/intel/kms_fbcon_fbt.c            |  4 +-
>  tests/intel/kms_frontbuffer_tracking.c |  2 +-
>  tests/intel/kms_pm_dc.c                |  9 +++--
>  tests/intel/kms_psr.c                  |  2 +-
>  tests/intel/kms_psr2_sf.c              |  3 +-
>  tests/intel/kms_psr2_su.c              |  3 +-
>  tests/intel/kms_psr_stress_test.c      |  2 +-
>  tests/kms_feature_discovery.c          |  4 +-
>  11 files changed, 57 insertions(+), 31 deletions(-)
> 
> diff --git a/lib/igt_psr.c b/lib/igt_psr.c
> index 13f7c567d..aa3ca9ddb 100644
> --- a/lib/igt_psr.c
> +++ b/lib/igt_psr.c
> @@ -192,31 +192,51 @@ bool psr_disable(int device, int debugfs_fd)
>         return psr_set(device, debugfs_fd, -1);
>  }
>  
> -bool psr_sink_support(int device, int debugfs_fd, enum psr_mode
> mode)
> +bool psr_sink_support(int device, int debugfs_fd, enum psr_mode
> mode, igt_output_t *output)
>  {
> +       char *line;
> +       char debugfs_file[128] = {0};
>         char buf[PSR_STATUS_MAX_LEN];
>         int ret;
>  
> -       ret = igt_debugfs_simple_read(debugfs_fd,
> "i915_edp_psr_status", buf,
> +       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 < 1)
>                 return false;
>  
> -       if (mode == PSR_MODE_1)
> -               return strstr(buf, "Sink_Support: yes\n") ||
> -                      strstr(buf, "Sink support: yes");
> -       else
> -               /*
> -                * i915 requires PSR version 0x03 that is PSR2 + SU
> with
> -                * Y-coordinate to support PSR2
> -                *
> -                * or
> -                *
> -                * PSR version 0x4 that is PSR2 + SU w/ Y-coordinate
> and SU
> -                * Region Early Transport to support PSR2 (eDP 1.5)
> -                */
> -               return strstr(buf, "Sink support: yes [0x03]") ||
> -                      strstr(buf, "Sink support: yes [0x04]");
> +       line = strstr(buf, "Sink support: ");
> +       if (!line)
> +               return false;
> +
> +       switch (mode) {
> +               case PSR_MODE_1:
> +                       return strstr(line, "PSR = yes");
> +               case PSR_MODE_2:
> +               case PSR_MODE_2_SEL_FETCH:
> +                       /*
> +                        * i915 requires PSR version 0x03 that is
> PSR2 + SU with
> +                        * Y-coordinate to support PSR2
> +                        * or
> +                        *
> +                        * PSR version 0x4 that is PSR2 + SU w/ Y-
> coordinate and SU
> +                        * Region Early Transport to support PSR2
> (eDP 1.5)
> +                        */
> +                       return strstr(line, "PSR = yes") &&
> +                              (strstr(line, "[0x03]") ||
> strstr(line, "[0x04]"));
> +               case PR_MODE:
> +                       return strstr(line, "Panel Replay = yes");
> +               case PR_MODE_SEL_FETCH:
> +                       return strstr(line, "Panel Replay = yes") &&
> +                              strstr(buf, "PSR2 selective fetch:
> enabled");

I think this isn't yet implemented on kernel side, but I would assume
we use "selective update" and not PSR2. Selective fetch is feature in
our HW which can be used when doing selective updates. Panel isn't
aware of selective fetch done on source side.

BR,
Jouni Högander

 
> +               default:
> +                       igt_assert_f(false, "Invalid psr mode\n");
> +                       return false;
> +       }
>  }
>  
>  #define PSR2_SU_BLOCK_STR_LOOKUP "PSR2 SU blocks:\n0\t"
> diff --git a/lib/igt_psr.h b/lib/igt_psr.h
> index 243154897..e213b05e9 100644
> --- a/lib/igt_psr.h
> +++ b/lib/igt_psr.h
> @@ -27,6 +27,7 @@
>  #include "igt_debugfs.h"
>  #include "igt_core.h"
>  #include "igt_aux.h"
> +#include "igt_kms.h"
>  
>  #define PSR_STATUS_MAX_LEN 512
>  
> @@ -46,7 +47,7 @@ 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_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);
> +bool psr_sink_support(int device, int debugfs_fd, enum psr_mode
> mode, igt_output_t *output);
>  bool psr2_wait_su(int debugfs_fd, uint16_t *num_su_blocks);
>  void psr_print_debugfs(int debugfs_fd);
>  enum psr_mode psr_get_mode(int debugfs_fd);
> diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
> index cc9529178..f7ff1ac0b 100644
> --- a/tests/intel/kms_dirtyfb.c
> +++ b/tests/intel/kms_dirtyfb.c
> @@ -92,7 +92,7 @@ static bool check_support(data_t *data)
>                     DRM_MODE_CONNECTOR_eDP)
>                         return false;
>                 return psr_sink_support(data->drm_fd, data-
> >debugfs_fd,
> -                                       PSR_MODE_1);
> +                                       PSR_MODE_1, NULL);
>         case FEATURE_DRRS:
>                 return intel_is_drrs_supported(data->drm_fd, data-
> >pipe) &&
>                         intel_output_has_drrs(data->drm_fd, data-
> >output);
> diff --git a/tests/intel/kms_fbcon_fbt.c
> b/tests/intel/kms_fbcon_fbt.c
> index 8d6bb3cb6..a7f24e669 100644
> --- a/tests/intel/kms_fbcon_fbt.c
> +++ b/tests/intel/kms_fbcon_fbt.c
> @@ -269,7 +269,7 @@ static bool psr_is_disabled(int debugfs_fd)
>  
>  static bool psr_supported_on_chipset(int device, int debugfs_fd)
>  {
> -       return psr_sink_support(device, debugfs_fd, PSR_MODE_1);
> +       return psr_sink_support(device, debugfs_fd, PSR_MODE_1,
> NULL);
>  }
>  
>  static bool psr_wait_until_update(struct drm_info *drm)
> @@ -280,7 +280,7 @@ static bool psr_wait_until_update(struct drm_info
> *drm)
>  static void disable_features(int device, int debugfs_fd)
>  {
>         igt_set_module_param_int(device, "enable_fbc", 0);
> -       if (psr_sink_support(device, debugfs_fd, PSR_MODE_1))
> +       if (psr_sink_support(device, debugfs_fd, PSR_MODE_1, NULL))
>                 psr_disable(device, debugfs_fd);
>  }
>  
> diff --git a/tests/intel/kms_frontbuffer_tracking.c
> b/tests/intel/kms_frontbuffer_tracking.c
> index f90d09f9f..2d588e836 100644
> --- a/tests/intel/kms_frontbuffer_tracking.c
> +++ b/tests/intel/kms_frontbuffer_tracking.c
> @@ -1362,7 +1362,7 @@ static void setup_psr(void)
>                 return;
>         }
>  
> -       if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1)) {
> +       if (!psr_sink_support(drm.fd, drm.debugfs, PSR_MODE_1, NULL))
> {
>                 igt_info("Can't test PSR: not supported by sink.\n");
>                 return;
>         }
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index 1e9ca5d6c..e5daacb84 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -673,14 +673,16 @@ igt_main
>         igt_describe("In this test we make sure that system enters
> DC3CO "
>                      "when PSR2 is active and system is in SLEEP
> state");
>         igt_subtest("dc3co-vpb-simulation") {
> -               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd, PSR_MODE_2));
> +               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd,
> +                                            PSR_MODE_2, NULL));
>                 test_dc3co_vpb_simulation(&data);
>         }
>  
>         igt_describe("This test validates display engine entry to DC5
> state "
>                      "while PSR is active");
>         igt_subtest("dc5-psr") {
> -               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd, PSR_MODE_1));
> +               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd,
> +                                            PSR_MODE_1, NULL));
>                 data.op_psr_mode = PSR_MODE_1;
>                 psr_enable(data.drm_fd, data.debugfs_fd,
> data.op_psr_mode);
>                 test_dc_state_psr(&data, CHECK_DC5);
> @@ -689,7 +691,8 @@ igt_main
>         igt_describe("This test validates display engine entry to DC6
> state "
>                      "while PSR is active");
>         igt_subtest("dc6-psr") {
> -               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd, PSR_MODE_1));
> +               igt_require(psr_sink_support(data.drm_fd,
> data.debugfs_fd,
> +                                            PSR_MODE_1, NULL));
>                 data.op_psr_mode = PSR_MODE_1;
>                 psr_enable(data.drm_fd, data.debugfs_fd,
> data.op_psr_mode);
>                 igt_require_f(igt_pm_pc8_plus_residencies_enabled(dat
> a.msr_fd),
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index ffecc5222..260095aec 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -433,7 +433,7 @@ static void fill_render(data_t *data, const
> struct igt_fb *fb,
>  static bool sink_support(data_t *data, enum psr_mode mode)
>  {
>         return data->with_psr_disabled ||
> -              psr_sink_support(data->drm_fd, data->debugfs_fd,
> mode);
> +              psr_sink_support(data->drm_fd, data->debugfs_fd, mode,
> NULL);
>  }
>  
>  static bool psr_wait_entry_if_enabled(data_t *data)
> diff --git a/tests/intel/kms_psr2_sf.c b/tests/intel/kms_psr2_sf.c
> index d7a746211..2d05f1110 100644
> --- a/tests/intel/kms_psr2_sf.c
> +++ b/tests/intel/kms_psr2_sf.c
> @@ -980,7 +980,8 @@ igt_main
>                 kmstest_set_vt_graphics_mode();
>  
>                 igt_require_f(psr_sink_support(data.drm_fd,
> -                                              data.debugfs_fd,
> PSR_MODE_2),
> +                                              data.debugfs_fd,
> PSR_MODE_2,
> +                                              NULL),
>                               "Sink does not support PSR2\n");
>  
>                 display_init(&data);
> diff --git a/tests/intel/kms_psr2_su.c b/tests/intel/kms_psr2_su.c
> index 834fec1ec..2f89de435 100644
> --- a/tests/intel/kms_psr2_su.c
> +++ b/tests/intel/kms_psr2_su.c
> @@ -327,7 +327,8 @@ igt_main
>                 kmstest_set_vt_graphics_mode();
>  
>                 igt_require_f(psr_sink_support(data.drm_fd,
> -                                              data.debugfs_fd,
> PSR_MODE_2),
> +                                              data.debugfs_fd,
> +                                              PSR_MODE_2, NULL),
>                               "Sink does not support PSR2\n");
>  
>                 igt_require_f(intel_display_ver(intel_get_drm_devid(d
> ata.drm_fd)) < 13,
> diff --git a/tests/intel/kms_psr_stress_test.c
> b/tests/intel/kms_psr_stress_test.c
> index b6759eece..beded3b94 100644
> --- a/tests/intel/kms_psr_stress_test.c
> +++ b/tests/intel/kms_psr_stress_test.c
> @@ -357,7 +357,7 @@ igt_main
>                 kmstest_set_vt_graphics_mode();
>  
>                 igt_require_f(psr_sink_support(data.drm_fd,
> data.debugfs_fd,
> -                                              PSR_MODE_1),
> +                                              PSR_MODE_1, NULL),
>                               "Sink does not support PSR\n");
>  
>                 setup_output(&data);
> diff --git a/tests/kms_feature_discovery.c
> b/tests/kms_feature_discovery.c
> index 3a1f6d21d..428f97ffe 100644
> --- a/tests/kms_feature_discovery.c
> +++ b/tests/kms_feature_discovery.c
> @@ -159,12 +159,12 @@ igt_main {
>  
>                 igt_describe("Make sure that we have eDP panel with
> PSR1 support.");
>                 igt_subtest("psr1") {
> -                       igt_require(psr_sink_support(fd, debugfs_fd,
> PSR_MODE_1));
> +                       igt_require(psr_sink_support(fd, debugfs_fd,
> PSR_MODE_1, NULL));
>                 }
>  
>                 igt_describe("Make sure that we have eDP panel with
> PSR2 support.");
>                 igt_subtest("psr2") {
> -                       igt_require(psr_sink_support(fd, debugfs_fd,
> PSR_MODE_2));
> +                       igt_require(psr_sink_support(fd, debugfs_fd,
> PSR_MODE_2, NULL));
>                 }
>  
>                 igt_describe("Make sure that we have DP-MST
> configuration.");


  reply	other threads:[~2023-10-31 10:40 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-31  8:09 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 1/7] lib/igt_psr: added enum for panel replay Kunal Joshi
2023-10-31 11:32   ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-10-31 10:40   ` Hogander, Jouni [this message]
2023-10-31 12:02     ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 3/7] lib/igt_psr: modified psr_active_check " Kunal Joshi
2023-10-31 11:38   ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 4/7] lib/igt_psr: modified psr_set " Kunal Joshi
2023-10-31 11:42   ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 5/7] lib/igt_psr: modified psr_get_mode " Kunal Joshi
2023-10-31 12:06   ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 6/7] tests/intel/kms_psr: made test compaitable with pr Kunal Joshi
2023-10-31 12:23   ` Hogander, Jouni
2023-10-31  8:09 ` [igt-dev] [PATCH i-g-t 7/7] HAX PATCH DO NOT MERGE Kunal Joshi
2023-10-31  9:41 ` [igt-dev] ✗ Fi.CI.BAT: failure for extend kms_psr test to validate pr (rev3) Patchwork
2023-10-31  9:43 ` [igt-dev] ✗ CI.xeBAT: " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2023-11-10  9:52 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-10  9:52 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-11-10  9:43 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-10  9:43 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-11-10  8:15 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-10  8:15 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-11-10  8:11   ` Hogander, Jouni
2023-11-10  7:16 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-10  7:16 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-11-09  6:09 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-09  6:09 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-11-10  7:53   ` Hogander, Jouni
2023-11-09  3:36 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-11-09  3:37 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi
2023-10-25 14:27 [igt-dev] [PATCH i-g-t 0/7] extend kms_psr test to validate pr Kunal Joshi
2023-10-25 14:27 ` [igt-dev] [PATCH i-g-t 2/7] lib/igt_psr: modified psr_sink_support for pr compatability Kunal Joshi

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=092f55b945b50ae4634f2b8792f0190eef2859f9.camel@intel.com \
    --to=jouni.hogander@intel.com \
    --cc=arun.r.murthy@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=kunal1.joshi@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox