[Intel-gfx] [PATCH 1/3] drm/i915/dmc: abstract GPU error state dump
Lucas De Marchi
lucas.demarchi at intel.com
Fri Apr 1 14:58:09 UTC 2022
On Fri, Apr 01, 2022 at 10:43:19AM +0300, Jani Nikula wrote:
>On Wed, 30 Mar 2022, Jani Nikula <jani.nikula at intel.com> wrote:
>> Only intel_dmc.c should be accessing dmc details directly.
>>
>> Need to add an i915_error_printf() stub for
>> CONFIG_DRM_I915_CAPTURE_ERROR=n.
>>
>> v2: Add the stub (kernel test robot <lkp at intel.com>)
>>
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com> # v1
>
>Just as I pushed to din, I realized I jumped the gun a bit, I meant to
>wait for rb confirmation on v2. The diff isn't big, but generally I
>prefer erring on the side of caution. Sorry.
v2 looks good to me. I missed this update when you sent.
thanks
Lucas De Marchi
>
>And thanks for review on v1. :)
>
>BR,
>Jani.
>
>
>> ---
>> drivers/gpu/drm/i915/display/intel_dmc.c | 15 +++++++++++++++
>> drivers/gpu/drm/i915/display/intel_dmc.h | 3 +++
>> drivers/gpu/drm/i915/i915_gpu_error.c | 10 +---------
>> drivers/gpu/drm/i915/i915_gpu_error.h | 6 ++++++
>> 4 files changed, 25 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
>> index 5de13f978e57..f0eb3de8de60 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc.c
>> @@ -811,6 +811,21 @@ void intel_dmc_ucode_fini(struct drm_i915_private *dev_priv)
>> kfree(dev_priv->dmc.dmc_info[id].payload);
>> }
>>
>> +void intel_dmc_print_error_state(struct drm_i915_error_state_buf *m,
>> + struct drm_i915_private *i915)
>> +{
>> + struct intel_dmc *dmc = &i915->dmc;
>> +
>> + if (!HAS_DMC(i915))
>> + return;
>> +
>> + i915_error_printf(m, "DMC loaded: %s\n",
>> + str_yes_no(intel_dmc_has_payload(i915)));
>> + i915_error_printf(m, "DMC fw version: %d.%d\n",
>> + DMC_VERSION_MAJOR(dmc->version),
>> + DMC_VERSION_MINOR(dmc->version));
>> +}
>> +
>> static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
>> {
>> struct drm_i915_private *i915 = m->private;
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.h b/drivers/gpu/drm/i915/display/intel_dmc.h
>> index b9f608057700..dd8880d2cbed 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc.h
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc.h
>> @@ -10,6 +10,7 @@
>> #include "intel_wakeref.h"
>> #include <linux/workqueue.h>
>>
>> +struct drm_i915_error_state_buf;
>> struct drm_i915_private;
>>
>> #define DMC_VERSION(major, minor) ((major) << 16 | (minor))
>> @@ -55,6 +56,8 @@ void intel_dmc_ucode_suspend(struct drm_i915_private *i915);
>> void intel_dmc_ucode_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_i915_error_state_buf *m,
>> + struct drm_i915_private *i915);
>>
>> 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 795f91a88d1d..25f4e178b410 100644
>> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
>> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
>> @@ -848,15 +848,7 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m,
>>
>> err_printf(m, "IOMMU enabled?: %d\n", error->iommu);
>>
>> - if (HAS_DMC(m->i915)) {
>> - struct intel_dmc *dmc = &m->i915->dmc;
>> -
>> - err_printf(m, "DMC loaded: %s\n",
>> - str_yes_no(intel_dmc_has_payload(m->i915) != 0));
>> - err_printf(m, "DMC fw version: %d.%d\n",
>> - DMC_VERSION_MAJOR(dmc->version),
>> - DMC_VERSION_MINOR(dmc->version));
>> - }
>> + intel_dmc_print_error_state(m, 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));
>> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
>> index 09159ff01411..7977a01a708f 100644
>> --- a/drivers/gpu/drm/i915/i915_gpu_error.h
>> +++ b/drivers/gpu/drm/i915/i915_gpu_error.h
>> @@ -298,6 +298,12 @@ void i915_disable_error_state(struct drm_i915_private *i915, int err);
>>
>> #else
>>
>> +__printf(2, 3)
>> +static inline void
>> +i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...)
>> +{
>> +}
>> +
>> static inline void
>> i915_capture_error_state(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 dump_flags)
>> {
>
>--
>Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list