drm/i915/display: move dmc snapshotting to new display snapshot
Convert dmc error state printing to new snapshot capture/print division. v2: Rebase Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/9116319e7faceeed7695ee35e56fe001ddf94e11.1726151571.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -1194,21 +1194,43 @@ void intel_dmc_fini(struct intel_display *display)
|
||||
}
|
||||
}
|
||||
|
||||
void intel_dmc_print_error_state(struct drm_printer *p,
|
||||
struct intel_display *display)
|
||||
struct intel_dmc_snapshot {
|
||||
bool initialized;
|
||||
bool loaded;
|
||||
u32 version;
|
||||
};
|
||||
|
||||
struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display)
|
||||
{
|
||||
struct intel_dmc *dmc = display_to_dmc(display);
|
||||
struct intel_dmc_snapshot *snapshot;
|
||||
|
||||
if (!HAS_DMC(display))
|
||||
return NULL;
|
||||
|
||||
snapshot = kzalloc(sizeof(*snapshot), GFP_ATOMIC);
|
||||
if (!snapshot)
|
||||
return NULL;
|
||||
|
||||
snapshot->initialized = dmc;
|
||||
snapshot->loaded = intel_dmc_has_payload(display);
|
||||
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(dmc));
|
||||
drm_printf(p, "DMC loaded: %s\n",
|
||||
str_yes_no(intel_dmc_has_payload(display)));
|
||||
if (dmc)
|
||||
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));
|
||||
}
|
||||
|
||||
static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
enum pipe;
|
||||
struct drm_printer;
|
||||
struct intel_display;
|
||||
struct intel_dmc_snapshot;
|
||||
|
||||
void intel_dmc_init(struct intel_display *display);
|
||||
void intel_dmc_load_program(struct intel_display *display);
|
||||
@@ -22,8 +23,9 @@ void intel_dmc_suspend(struct intel_display *display);
|
||||
void intel_dmc_resume(struct intel_display *display);
|
||||
bool intel_dmc_has_payload(struct intel_display *display);
|
||||
void intel_dmc_debugfs_register(struct intel_display *display);
|
||||
void intel_dmc_print_error_state(struct drm_printer *p,
|
||||
struct intel_display *display);
|
||||
|
||||
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 intel_display *display);
|
||||
|
||||
|
||||
@@ -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->display);
|
||||
|
||||
err_printf(m, "RPM wakelock: %s\n", str_yes_no(error->wakelock));
|
||||
err_printf(m, "PM suspended: %s\n", str_yes_no(error->suspended));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user