mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-17 11:39:01 +07:00
drm/i915: Build request info on stack before printk
printk unhelpfully inserts a '\n' between consecutive calls, and since
our drm_printf wrapper may be emitting info a seq_file instead,
KERN_CONT is not an option. To work with any drm_printf destination, we
need to build up the output into a temporary buf on the stack and then
feed the complete line in a single call to printk.
Fixes: b7268c5eed
("drm/i915: Pack params to engine->schedule() into a struct")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180424010839.22860-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
1c3c1dc66a
commit
247870ac8e
@ -1113,14 +1113,17 @@ unsigned int intel_engines_has_context_isolation(struct drm_i915_private *i915)
|
||||
return which;
|
||||
}
|
||||
|
||||
static void print_sched_attr(struct drm_printer *m,
|
||||
const struct drm_i915_private *i915,
|
||||
const struct i915_sched_attr *attr)
|
||||
static int print_sched_attr(struct drm_i915_private *i915,
|
||||
const struct i915_sched_attr *attr,
|
||||
char *buf, int x, int len)
|
||||
{
|
||||
if (attr->priority == I915_PRIORITY_INVALID)
|
||||
return;
|
||||
return x;
|
||||
|
||||
drm_printf(m, "prio=%d", attr->priority);
|
||||
x += snprintf(buf + x, len - x,
|
||||
" prio=%d", attr->priority);
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static void print_request(struct drm_printer *m,
|
||||
@ -1128,14 +1131,17 @@ static void print_request(struct drm_printer *m,
|
||||
const char *prefix)
|
||||
{
|
||||
const char *name = rq->fence.ops->get_timeline_name(&rq->fence);
|
||||
char buf[80];
|
||||
int x = 0;
|
||||
|
||||
drm_printf(m, "%s%x%s [%llx:%x] ",
|
||||
x = print_sched_attr(rq->i915, &rq->sched.attr, buf, x, sizeof(buf));
|
||||
|
||||
drm_printf(m, "%s%x%s [%llx:%x]%s @ %dms: %s\n",
|
||||
prefix,
|
||||
rq->global_seqno,
|
||||
i915_request_completed(rq) ? "!" : "",
|
||||
rq->fence.context, rq->fence.seqno);
|
||||
print_sched_attr(m, rq->i915, &rq->sched.attr);
|
||||
drm_printf(m, " @ %dms: %s\n",
|
||||
rq->fence.context, rq->fence.seqno,
|
||||
buf,
|
||||
jiffies_to_msecs(jiffies - rq->emitted_jiffies),
|
||||
name);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user