mirror of https://gitee.com/openkylin/linux.git
drm/i915: Print caller when tainting for CI
We can add taint from multiple places, printing the caller allows us to have a better overview of what exactly caused us to do the tainting. v2: Tweak format and print the device (Chris) v3: Move things around (Chris) Suggested-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20200706144107.204821-2-michal@hardline.pl
This commit is contained in:
parent
3f04bdce72
commit
65706203d1
|
@ -930,7 +930,7 @@ static bool __intel_gt_unset_wedged(struct intel_gt *gt)
|
|||
* Warn CI about the unrecoverable wedged condition.
|
||||
* Time for a reboot.
|
||||
*/
|
||||
add_taint_for_CI(TAINT_WARN);
|
||||
add_taint_for_CI(gt->i915, TAINT_WARN);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1097,7 +1097,7 @@ void intel_gt_reset(struct intel_gt *gt,
|
|||
* rather than continue on into oblivion. For everyone else,
|
||||
* the system should still plod along, but they have been warned!
|
||||
*/
|
||||
add_taint_for_CI(TAINT_WARN);
|
||||
add_taint_for_CI(gt->i915, TAINT_WARN);
|
||||
error:
|
||||
__intel_gt_set_wedged(gt);
|
||||
goto finish;
|
||||
|
@ -1362,7 +1362,7 @@ void intel_gt_set_wedged_on_init(struct intel_gt *gt)
|
|||
set_bit(I915_WEDGED_ON_INIT, >->reset.flags);
|
||||
|
||||
/* Wedged on init is non-recoverable */
|
||||
add_taint_for_CI(TAINT_WARN);
|
||||
add_taint_for_CI(gt->i915, TAINT_WARN);
|
||||
}
|
||||
|
||||
void intel_gt_set_wedged_on_fini(struct intel_gt *gt)
|
||||
|
|
|
@ -233,7 +233,7 @@ int live_rc6_ctx_wa(void *arg)
|
|||
i915_reset_engine_count(error, engine)) {
|
||||
pr_err("%s: GPU reset required\n",
|
||||
engine->name);
|
||||
add_taint_for_CI(TAINT_WARN);
|
||||
add_taint_for_CI(gt->i915, TAINT_WARN);
|
||||
err = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ struct drm_i915_private;
|
|||
trace_printk(__VA_ARGS__); \
|
||||
} while (0)
|
||||
#define GEM_TRACE_DUMP() \
|
||||
do { ftrace_dump(DUMP_ALL); add_taint_for_CI(TAINT_WARN); } while (0)
|
||||
do { ftrace_dump(DUMP_ALL); __add_taint_for_CI(TAINT_WARN); } while (0)
|
||||
#define GEM_TRACE_DUMP_ON(expr) \
|
||||
do { if (expr) GEM_TRACE_DUMP(); } while (0)
|
||||
#else
|
||||
|
|
|
@ -49,6 +49,13 @@ __i915_printk(struct drm_i915_private *dev_priv, const char *level,
|
|||
}
|
||||
}
|
||||
|
||||
void add_taint_for_CI(struct drm_i915_private *i915, unsigned int taint)
|
||||
{
|
||||
__i915_printk(i915, KERN_NOTICE, "CI tainted:%#x by %pS\n",
|
||||
taint, (void *)_RET_IP_);
|
||||
__add_taint_for_CI(taint);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
|
||||
static unsigned int i915_probe_fail_count;
|
||||
|
||||
|
|
|
@ -436,7 +436,8 @@ static inline const char *enableddisabled(bool v)
|
|||
return v ? "enabled" : "disabled";
|
||||
}
|
||||
|
||||
static inline void add_taint_for_CI(unsigned int taint)
|
||||
void add_taint_for_CI(struct drm_i915_private *i915, unsigned int taint);
|
||||
static inline void __add_taint_for_CI(unsigned int taint)
|
||||
{
|
||||
/*
|
||||
* The system is "ok", just about surviving for the user, but
|
||||
|
|
|
@ -142,7 +142,7 @@ fw_domain_wait_ack_clear(const struct intel_uncore_forcewake_domain *d)
|
|||
if (wait_ack_clear(d, FORCEWAKE_KERNEL)) {
|
||||
DRM_ERROR("%s: timed out waiting for forcewake ack to clear.\n",
|
||||
intel_uncore_forcewake_domain_to_str(d->id));
|
||||
add_taint_for_CI(TAINT_WARN); /* CI now unreliable */
|
||||
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -219,7 +219,7 @@ fw_domain_wait_ack_set(const struct intel_uncore_forcewake_domain *d)
|
|||
if (wait_ack_set(d, FORCEWAKE_KERNEL)) {
|
||||
DRM_ERROR("%s: timed out waiting for forcewake ack request.\n",
|
||||
intel_uncore_forcewake_domain_to_str(d->id));
|
||||
add_taint_for_CI(TAINT_WARN); /* CI now unreliable */
|
||||
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue