Re: [igt-dev] [PATCH i-g-t] lib/igt_psr: Changed psr_set logic to account for older kernels

Souza, Jose
2018-10-18T21:12:10Z

On Wed, 2018-10-17 at 14:26 -0700, Casey Bowman wrote:
> Only EINVAL was being used to account for older kernels,
> but on legacy kernels that don't use i915_edp_psr_debug,
> the ENOENT error will be thrown. This changes the logic
> to set PSR via the module parameter if a problem occurs
> when attempting to set PSR via the debugfs_fd.
>

Reviewed-by: José Roberto de Souza <jose.souza@intel.com>

> Signed-off-by: Casey Bowman <casey.g.bowman@intel.com>
> ---
> lib/igt_psr.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/lib/igt_psr.c b/lib/igt_psr.c
> index 0ddfb64f..6904393c 100644
> --- a/lib/igt_psr.c
> +++ b/lib/igt_psr.c
> @@ -61,6 +61,8 @@ static int has_psr_debugfs(int debugfs_fd)
> * Check if new PSR debugfs api is usable by writing an invalid
> value.
> * Legacy mode will return OK here, debugfs api will return
> -EINVAL.
> * -ENODEV is returned when PSR is unavailable.
> + * -ENOENT is returned when PSR debugfs api doesn't exist (i.e.
> using
> + * an older kernel).
> */
> ret = psr_write(debugfs_fd, "0xf");
> if (ret == -EINVAL)
> @@ -103,11 +105,11 @@ static bool psr_set(int debugfs_fd, bool
> enable)
> return false;
> }
>
> - if (ret == -EINVAL) {
> - ret = psr_modparam_set(enable);
> - } else {
> + if (ret == 0) {
> ret = psr_write(debugfs_fd, enable ? "0x3" : "0x1");
> igt_assert(ret > 0);
> + } else {
> + ret = psr_modparam_set(enable);
> }
>
> /* Restore original value on exit */