All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>, <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 4/4] drm/i915/display: move dmc snapshotting to new display snapshot
Date: Thu, 5 Sep 2024 12:59:22 -0400	[thread overview]
Message-ID: <ZtnjapJYQroUMa3m@intel.com> (raw)
In-Reply-To: <e6bef9acfb4b146c8763c5b4e319285f96872710.1725372032.git.jani.nikula@intel.com>

On Tue, Sep 03, 2024 at 05:03:00PM +0300, Jani Nikula wrote:
> Convert dmc error state printing to new snapshot capture/print division.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  .../drm/i915/display/intel_display_snapshot.c |  5 +++
>  drivers/gpu/drm/i915/display/intel_dmc.c      | 39 +++++++++++++++----
>  drivers/gpu/drm/i915/display/intel_dmc.h      |  7 +++-
>  drivers/gpu/drm/i915/i915_gpu_error.c         |  3 --
>  4 files changed, 41 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_snapshot.c b/drivers/gpu/drm/i915/display/intel_display_snapshot.c
> index a61ff0f81397..030c4f873da1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_snapshot.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_snapshot.c
> @@ -7,6 +7,7 @@
>  #include "intel_display_device.h"
>  #include "intel_display_params.h"
>  #include "intel_display_snapshot.h"
> +#include "intel_dmc.h"
>  #include "intel_overlay.h"
>  
>  struct intel_display_snapshot {
> @@ -16,6 +17,7 @@ struct intel_display_snapshot {
>  	struct intel_display_runtime_info runtime_info;
>  	struct intel_display_params params;
>  	struct intel_overlay_snapshot *overlay;
> +	struct intel_dmc_snapshot *dmc;
>  };
>  
>  struct intel_display_snapshot *intel_display_snapshot_capture(struct intel_display *display)
> @@ -35,6 +37,7 @@ struct intel_display_snapshot *intel_display_snapshot_capture(struct intel_displ
>  	intel_display_params_copy(&snapshot->params);
>  
>  	snapshot->overlay = intel_overlay_snapshot_capture(display);
> +	snapshot->dmc = intel_dmc_snapshot_capture(display);
>  
>  	return snapshot;
>  }
> @@ -53,6 +56,7 @@ void intel_display_snapshot_print(const struct intel_display_snapshot *snapshot,
>  	intel_display_params_dump(&snapshot->params, display->drm->driver->name, p);
>  
>  	intel_overlay_snapshot_print(snapshot->overlay, p);
> +	intel_dmc_snapshot_print(snapshot->dmc, p);
>  }
>  
>  void intel_display_snapshot_free(struct intel_display_snapshot *snapshot)
> @@ -63,5 +67,6 @@ void intel_display_snapshot_free(struct intel_display_snapshot *snapshot)
>  	intel_display_params_free(&snapshot->params);
>  
>  	kfree(snapshot->overlay);
> +	kfree(snapshot->dmc);
>  	kfree(snapshot);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
> index 7c756d5ba2a2..d2f9684c8b0e 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc.c
> @@ -1184,21 +1184,44 @@ void intel_dmc_fini(struct drm_i915_private *i915)
>  	}
>  }
>  
> -void intel_dmc_print_error_state(struct drm_printer *p,
> -				 struct drm_i915_private *i915)
> +struct intel_dmc_snapshot {
> +	bool initialized;
> +	bool loaded;
> +	u32 version;
> +};
> +
> +struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display)
>  {
> +	struct drm_i915_private *i915 = to_i915(display->drm);
>  	struct intel_dmc *dmc = i915_to_dmc(i915);
> +	struct intel_dmc_snapshot *snapshot;
>  
>  	if (!HAS_DMC(i915))
> -		return;
> +		return NULL;
>  
> -	drm_printf(p, "DMC initialized: %s\n", str_yes_no(dmc));
> -	drm_printf(p, "DMC loaded: %s\n",
> -		   str_yes_no(intel_dmc_has_payload(i915)));
> +	snapshot = kzalloc(sizeof(*snapshot), GFP_ATOMIC);
> +	if (!snapshot)
> +		return NULL;
> +
> +	snapshot->initialized = dmc;
> +	snapshot->loaded = intel_dmc_has_payload(i915);
>  	if (dmc)
> +		snapshot->version = dmc->version;
> +
> +	return snapshot;
> +}
> +
> +void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p)
> +{
> +	if (!snapshot)
> +		return;
> +
> +	drm_printf(p, "DMC initialized: %s\n", str_yes_no(snapshot->initialized));
> +	drm_printf(p, "DMC loaded: %s\n", str_yes_no(snapshot->loaded));
> +	if (snapshot->initialized)
>  		drm_printf(p, "DMC fw version: %d.%d\n",
> -			   DMC_VERSION_MAJOR(dmc->version),
> -			   DMC_VERSION_MINOR(dmc->version));
> +			   DMC_VERSION_MAJOR(snapshot->version),
> +			   DMC_VERSION_MINOR(snapshot->version));

I was wondering if we really need to stash the version, but since the
print can happen later and perhaps when it is gone, let's go with the safe.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

>  }
>  
>  static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.h b/drivers/gpu/drm/i915/display/intel_dmc.h
> index 54cff6002e31..e2186c900505 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc.h
> +++ b/drivers/gpu/drm/i915/display/intel_dmc.h
> @@ -11,6 +11,8 @@
>  enum pipe;
>  struct drm_i915_private;
>  struct drm_printer;
> +struct intel_display;
> +struct intel_dmc_snapshot;
>  
>  void intel_dmc_init(struct drm_i915_private *i915);
>  void intel_dmc_load_program(struct drm_i915_private *i915);
> @@ -22,8 +24,9 @@ void intel_dmc_suspend(struct drm_i915_private *i915);
>  void intel_dmc_resume(struct drm_i915_private *i915);
>  bool intel_dmc_has_payload(struct drm_i915_private *i915);
>  void intel_dmc_debugfs_register(struct drm_i915_private *i915);
> -void intel_dmc_print_error_state(struct drm_printer *p,
> -				 struct drm_i915_private *i915);
> +
> +struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display);
> +void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p);
>  
>  void assert_dmc_loaded(struct drm_i915_private *i915);
>  
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index 15d57206b281..135ded17334e 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -41,7 +41,6 @@
>  #include <drm/drm_print.h>
>  
>  #include "display/intel_display_snapshot.h"
> -#include "display/intel_dmc.h"
>  
>  #include "gem/i915_gem_context.h"
>  #include "gem/i915_gem_lmem.h"
> @@ -871,8 +870,6 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m,
>  
>  	err_printf(m, "IOMMU enabled?: %d\n", error->iommu);
>  
> -	intel_dmc_print_error_state(&p, m->i915);
> -
>  	err_printf(m, "RPM wakelock: %s\n", str_yes_no(error->wakelock));
>  	err_printf(m, "PM suspended: %s\n", str_yes_no(error->suspended));
>  
> -- 
> 2.39.2
> 

  reply	other threads:[~2024-09-05 16:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-03 14:02 [PATCH 0/4] drm/i915/display: add snapshot capture/print infra Jani Nikula
2024-09-03 14:02 ` [PATCH 1/4] drm/i915: dump display parameters captured in error state, not current Jani Nikula
2024-09-05 16:43   ` Rodrigo Vivi
2024-09-03 14:02 ` [PATCH 2/4] drm/i915/display: add intel_display_snapshot abstraction Jani Nikula
2024-09-04 12:23   ` kernel test robot
2024-09-04 13:04   ` kernel test robot
2024-09-04 14:19   ` [PATCH v2] " Jani Nikula
2024-09-05 16:55     ` Rodrigo Vivi
2024-09-03 14:02 ` [PATCH 3/4] drm/i915/display: move device info and params handling to snapshot Jani Nikula
2024-09-05 16:56   ` Rodrigo Vivi
2024-09-03 14:03 ` [PATCH 4/4] drm/i915/display: move dmc snapshotting to new display snapshot Jani Nikula
2024-09-05 16:59   ` Rodrigo Vivi [this message]
2024-09-03 18:28 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: add snapshot capture/print infra Patchwork
2024-09-03 18:28 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-09-03 18:36 ` ✓ Fi.CI.BAT: success " Patchwork
2024-09-03 19:22 ` ✓ CI.Patch_applied: " Patchwork
2024-09-03 19:22 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-03 19:24 ` ✓ CI.KUnit: success " Patchwork
2024-09-03 19:36 ` ✓ CI.Build: " Patchwork
2024-09-03 19:38 ` ✓ CI.Hooks: " Patchwork
2024-09-03 19:39 ` ✗ CI.checksparse: warning " Patchwork
2024-09-03 19:58 ` ✓ CI.BAT: success " Patchwork
2024-09-03 22:34 ` ✗ CI.FULL: failure " Patchwork
2024-09-04 14:25 ` ✓ CI.Patch_applied: success for drm/i915/display: add snapshot capture/print infra (rev2) Patchwork
2024-09-04 14:25 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-04 14:26 ` ✓ CI.KUnit: success " Patchwork
2024-09-04 14:38 ` ✓ CI.Build: " Patchwork
2024-09-04 14:40 ` ✓ CI.Hooks: " Patchwork
2024-09-04 14:42 ` ✗ CI.checksparse: warning " Patchwork
2024-09-04 15:18 ` ✗ CI.BAT: failure " Patchwork
2024-09-04 15:35 ` ✓ Fi.CI.BAT: success " Patchwork
2024-09-04 17:28 ` ✓ Fi.CI.IGT: success for drm/i915/display: add snapshot capture/print infra Patchwork
2024-09-05 13:25 ` ✗ Fi.CI.IGT: failure for drm/i915/display: add snapshot capture/print infra (rev2) Patchwork
2024-09-05 17:01 ` [PATCH 0/4] drm/i915/display: add snapshot capture/print infra Rodrigo Vivi
2024-09-06 13:43 ` ✓ CI.FULL: success for drm/i915/display: add snapshot capture/print infra (rev2) Patchwork

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=ZtnjapJYQroUMa3m@intel.com \
    --to=rodrigo.vivi@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jani.nikula@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.