Styled after WARN_ON/DRM_ERROR_ON, this prints a mild warning message (a KERN_NOTICE for significant but mild events) that allows us to insert interesting events without alarming the user or bug reporting tools. For an example I have changed a DRM_ERROR for being unable to set a performance enhancement in i915. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/intel_lrc.c | 5 ++--- include/drm/drmP.h | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index 184d5f2dce21..f62cd78f8691 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -1902,13 +1902,12 @@ static int gen8_init_rcs_context(struct drm_i915_gem_request *req) if (ret) return ret; - ret = intel_rcs_context_init_mocs(req); /* * Failing to program the MOCS is non-fatal.The system will not * run at peak performance. So generate an error and carry on. */ - if (ret) - DRM_ERROR("MOCS failed to program: expect performance issues.\n"); + DRM_NOTICE_IF(intel_rcs_context_init_mocs(req), + "MOCS failed to program: expect performance issues.\n"); return intel_lr_context_render_state_init(req); } diff --git a/include/drm/drmP.h b/include/drm/drmP.h index b76af322d812..f2d68d185274 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -181,6 +181,26 @@ void drm_err(const char *format, ...); }) /** + * Mild warning on assertion-esque failure. + * + * \param cond condition on which to *fail* + * \param fmt printf() like format string. + * \param arg arguments + * + * This is similar to WARN_ON but only prints a NOTICE rather than a warning + * and the whole stacktrace. It is only intended for mild issues which + * while significant do not critically impact the user (such as a performance + * issue). + */ +#define DRM_NOTICE_IF(cond, fmt, ...) ({ \ + bool __cond = !!(cond); \ + if (unlikely(__cond)) \ + printk(KERN_NOTICE "[" DRM_NAME ":%s] " fmt, \ + __func__, ##__VA_ARGS__); \ + unlikely(__cond); \ +}) + +/** * Rate limited error output. Like DRM_ERROR() but won't flood the log. * * \param fmt printf() like format string. -- 2.4.6 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel