Commit 7a61a6aa authored by Jouni Högander's avatar Jouni Högander

drm/i915/display: Dump also display parameters

GPU error dump contained all module parameters. If we are moving
display parameters to intel_display_params.[ch] they are not dumped
into GPU error dump. This patch is adding moved display parameters
back to GPU error dump. Display parameters are also included in
i915_capabilities

v2: Add parameters to i915_capabilities as well
Signed-off-by: default avatarJouni Högander <jouni.hogander@intel.com>
Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231024124109.384973-3-jouni.hogander@intel.com
parent 8015bee0
...@@ -27,6 +27,63 @@ static struct intel_display_params intel_display_modparams __read_mostly = { ...@@ -27,6 +27,63 @@ static struct intel_display_params intel_display_modparams __read_mostly = {
* debugfs mode to 0. * debugfs mode to 0.
*/ */
__maybe_unused
static void _param_print_bool(struct drm_printer *p, const char *driver_name,
const char *name, bool val)
{
drm_printf(p, "%s.%s=%s\n", driver_name, name, str_yes_no(val));
}
__maybe_unused
static void _param_print_int(struct drm_printer *p, const char *driver_name,
const char *name, int val)
{
drm_printf(p, "%s.%s=%d\n", driver_name, name, val);
}
__maybe_unused
static void _param_print_uint(struct drm_printer *p, const char *driver_name,
const char *name, unsigned int val)
{
drm_printf(p, "%s.%s=%u\n", driver_name, name, val);
}
__maybe_unused
static void _param_print_ulong(struct drm_printer *p, const char *driver_name,
const char *name, unsigned long val)
{
drm_printf(p, "%s.%s=%lu\n", driver_name, name, val);
}
__maybe_unused
static void _param_print_charp(struct drm_printer *p, const char *driver_name,
const char *name, const char *val)
{
drm_printf(p, "%s.%s=%s\n", driver_name, name, val);
}
#define _param_print(p, driver_name, name, val) \
_Generic(val, \
bool : _param_print_bool, \
int : _param_print_int, \
unsigned int : _param_print_uint, \
unsigned long : _param_print_ulong, \
char * : _param_print_charp)(p, driver_name, name, val)
/**
* intel_display_params_dump - dump intel display modparams
* @i915: i915 device
* @p: the &drm_printer
*
* Pretty printer for i915 modparams.
*/
void intel_display_params_dump(struct drm_i915_private *i915, struct drm_printer *p)
{
#define PRINT(T, x, ...) _param_print(p, i915->drm.driver->name, #x, i915->display.params.x);
INTEL_DISPLAY_PARAMS_FOR_EACH(PRINT);
#undef PRINT
}
__maybe_unused static void _param_dup_charp(char **valp) __maybe_unused static void _param_dup_charp(char **valp)
{ {
*valp = kstrdup(*valp ? *valp : "", GFP_ATOMIC); *valp = kstrdup(*valp ? *valp : "", GFP_ATOMIC);
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#define _INTEL_DISPLAY_PARAMS_H_ #define _INTEL_DISPLAY_PARAMS_H_
struct drm_printer; struct drm_printer;
struct drm_i915_private;
/* /*
* Invoke param, a function-like macro, for each intel display param, with * Invoke param, a function-like macro, for each intel display param, with
...@@ -28,6 +29,8 @@ struct intel_display_params { ...@@ -28,6 +29,8 @@ struct intel_display_params {
}; };
#undef MEMBER #undef MEMBER
void intel_display_params_dump(struct drm_i915_private *i915,
struct drm_printer *p);
void intel_display_params_copy(struct intel_display_params *dest); void intel_display_params_copy(struct intel_display_params *dest);
void intel_display_params_free(struct intel_display_params *params); void intel_display_params_free(struct intel_display_params *params);
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <drm/drm_debugfs.h> #include <drm/drm_debugfs.h>
#include "display/intel_display_params.h"
#include "gem/i915_gem_context.h" #include "gem/i915_gem_context.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_gt_buffer_pool.h" #include "gt/intel_gt_buffer_pool.h"
...@@ -74,6 +76,7 @@ static int i915_capabilities(struct seq_file *m, void *data) ...@@ -74,6 +76,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
kernel_param_lock(THIS_MODULE); kernel_param_lock(THIS_MODULE);
i915_params_dump(&i915->params, &p); i915_params_dump(&i915->params, &p);
intel_display_params_dump(i915, &p);
kernel_param_unlock(THIS_MODULE); kernel_param_unlock(THIS_MODULE);
return 0; return 0;
......
...@@ -660,6 +660,7 @@ static void err_print_params(struct drm_i915_error_state_buf *m, ...@@ -660,6 +660,7 @@ static void err_print_params(struct drm_i915_error_state_buf *m,
struct drm_printer p = i915_error_printer(m); struct drm_printer p = i915_error_printer(m);
i915_params_dump(params, &p); i915_params_dump(params, &p);
intel_display_params_dump(m->i915, &p);
} }
static void err_print_pciid(struct drm_i915_error_state_buf *m, static void err_print_pciid(struct drm_i915_error_state_buf *m,
...@@ -1027,6 +1028,7 @@ static void i915_vma_coredump_free(struct i915_vma_coredump *vma) ...@@ -1027,6 +1028,7 @@ static void i915_vma_coredump_free(struct i915_vma_coredump *vma)
static void cleanup_params(struct i915_gpu_coredump *error) static void cleanup_params(struct i915_gpu_coredump *error)
{ {
i915_params_free(&error->params); i915_params_free(&error->params);
intel_display_params_free(&error->display_params);
} }
static void cleanup_uc(struct intel_uc_coredump *uc) static void cleanup_uc(struct intel_uc_coredump *uc)
...@@ -1979,6 +1981,7 @@ static void capture_gen(struct i915_gpu_coredump *error) ...@@ -1979,6 +1981,7 @@ static void capture_gen(struct i915_gpu_coredump *error)
error->suspend_count = i915->suspend_count; error->suspend_count = i915->suspend_count;
i915_params_copy(&error->params, &i915->params); i915_params_copy(&error->params, &i915->params);
intel_display_params_copy(&error->display_params);
memcpy(&error->device_info, memcpy(&error->device_info,
INTEL_INFO(i915), INTEL_INFO(i915),
sizeof(error->device_info)); sizeof(error->device_info));
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <drm/drm_mm.h> #include <drm/drm_mm.h>
#include "display/intel_display_device.h" #include "display/intel_display_device.h"
#include "display/intel_display_params.h"
#include "gt/intel_engine.h" #include "gt/intel_engine.h"
#include "gt/intel_gt_types.h" #include "gt/intel_gt_types.h"
#include "gt/uc/intel_uc_fw.h" #include "gt/uc/intel_uc_fw.h"
...@@ -214,6 +215,7 @@ struct i915_gpu_coredump { ...@@ -214,6 +215,7 @@ struct i915_gpu_coredump {
struct intel_display_runtime_info display_runtime_info; struct intel_display_runtime_info display_runtime_info;
struct intel_driver_caps driver_caps; struct intel_driver_caps driver_caps;
struct i915_params params; struct i915_params params;
struct intel_display_params display_params;
struct intel_overlay_error_state *overlay; struct intel_overlay_error_state *overlay;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment