* [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros
@ 2022-11-08 11:49 Tvrtko Ursulin
2022-11-08 12:01 ` Jani Nikula
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Tvrtko Ursulin @ 2022-11-08 11:49 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula, John Harrison, dri-devel, Tvrtko Ursulin
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Convert some usages of legacy DRM logging macros into versions which tell
us on which device have the events occurred.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 23 ++++++----
.../drm/i915/gt/intel_execlists_submission.c | 13 +++---
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
.../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
.../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
drivers/gpu/drm/i915/i915_gem.c | 2 +-
drivers/gpu/drm/i915/i915_getparam.c | 2 +-
drivers/gpu/drm/i915/i915_irq.c | 12 +++---
drivers/gpu/drm/i915/i915_perf.c | 14 +++---
drivers/gpu/drm/i915/i915_query.c | 12 +++---
drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
19 files changed, 116 insertions(+), 81 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 01402f3c58f6..7f2831efc798 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
}
if (intel_engine_uses_guc(master)) {
- DRM_DEBUG("bonding extension not supported with GuC submission");
+ drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
return -ENODEV;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 1160723c9d2d..1eb7b66191b2 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
return err;
}
-static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
+static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
+ struct drm_i915_gem_execbuffer2 *exec)
{
if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
return -EINVAL;
@@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
}
if (exec->DR4 == 0xffffffff) {
- DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
+ drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
exec->DR4 = 0;
}
if (exec->DR1 || exec->DR4)
@@ -2744,6 +2745,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
const struct drm_i915_gem_execbuffer_ext_timeline_fences *timeline_fences)
{
struct drm_i915_gem_exec_fence __user *user_fences;
+ struct drm_device *drm = &eb->i915->drm;
u64 __user *user_values;
struct eb_fence *f;
u64 nfences;
@@ -2799,7 +2801,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(drm, "Invalid syncobj handle provided\n");
return -ENOENT;
}
@@ -2807,7 +2809,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
if (!fence && user_fence.flags &&
!(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(drm, "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -2816,7 +2818,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
err = dma_fence_chain_find_seqno(&fence, point);
if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
+ drm_dbg(drm,
+ "Syncobj handle missing requested point %llu\n",
+ point);
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return err;
@@ -2842,7 +2846,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
* 0) would break the timeline.
*/
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
- DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
+ drm_dbg(drm, "Trying to wait & signal the same timeline point.\n");
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return -EINVAL;
@@ -2873,6 +2877,7 @@ static int add_fence_array(struct i915_execbuffer *eb)
struct drm_i915_gem_execbuffer2 *args = eb->args;
struct drm_i915_gem_exec_fence __user *user;
unsigned long num_fences = args->num_cliprects;
+ struct drm_device *drm = &eb->i915->drm;
struct eb_fence *f;
if (!(args->flags & I915_EXEC_FENCE_ARRAY))
@@ -2913,14 +2918,14 @@ static int add_fence_array(struct i915_execbuffer *eb)
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(drm, "Invalid syncobj handle provided\n");
return -ENOENT;
}
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
fence = drm_syncobj_fence_get(syncobj);
if (!fence) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(drm, "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -3515,7 +3520,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
return -EINVAL;
}
- err = i915_gem_check_execbuffer(args);
+ err = i915_gem_check_execbuffer(i915, args);
if (err)
return err;
diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index 0187bc72310d..d92512780467 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -3921,6 +3921,7 @@ static struct intel_context *
execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
unsigned long flags)
{
+ struct drm_i915_private *i915 = siblings[0]->i915;
struct virtual_engine *ve;
unsigned int n;
int err;
@@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
if (!ve)
return ERR_PTR(-ENOMEM);
- ve->base.i915 = siblings[0]->i915;
+ ve->base.i915 = i915;
ve->base.gt = siblings[0]->gt;
ve->base.uncore = siblings[0]->uncore;
ve->base.id = -1;
@@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
GEM_BUG_ON(!is_power_of_2(sibling->mask));
if (sibling->mask & ve->base.mask) {
- DRM_DEBUG("duplicate %s entry in load balancer\n",
- sibling->name);
+ drm_dbg(&i915->drm,
+ "duplicate %s entry in load balancer\n",
+ sibling->name);
err = -EINVAL;
goto err_put;
}
@@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
*/
if (ve->base.class != OTHER_CLASS) {
if (ve->base.class != sibling->class) {
- DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
- sibling->class, ve->base.class);
+ drm_dbg(&i915->drm,
+ "invalid mixing of engine class, sibling %d, already %d\n",
+ sibling->class, ve->base.class);
err = -EINVAL;
goto err_put;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index ea775e601686..995082d45cb2 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
if (obj->bit_17 == NULL) {
obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
if (obj->bit_17 == NULL) {
- DRM_ERROR("Failed to allocate memory for bit 17 "
- "record\n");
+ drm_err(&to_i915(obj->base.dev)->drm,
+ "Failed to allocate memory for bit 17 record\n");
return;
}
}
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index 8e914c4066ed..0ba7d6f36b28 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
ret = i915_ppgtt_init_hw(gt);
if (ret) {
- DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
+ drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
goto out;
}
@@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
* some errors might have become stuck,
* mask them.
*/
- DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
+ drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
rmw_set(uncore, EMR, eir);
intel_uncore_write(uncore, GEN2_IIR,
I915_MASTER_ERROR_INTERRUPT);
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index b197f0e9794f..4c8ddd074b78 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
!time_after32(local_clock() >> 10, timeout_ts));
if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
- DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
- bank, bit, ident);
+ drm_err(>->i915->drm,
+ "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
+ bank, bit, ident);
return 0;
}
@@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
GT_BSD_CS_ERROR_INTERRUPT |
GT_CS_MASTER_ERROR_INTERRUPT))
- DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
+ drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
+ gt_iir);
if (gt_iir & GT_PARITY_ERROR(gt->i915))
gen7_parity_error_irq_handler(gt, gt_iir);
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 6c34a83c24b3..effe60ac22cd 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
if (rgvswctl & MEMCTL_CMD_STS) {
- DRM_DEBUG("gpu busy, RCS change rejected\n");
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "gpu busy, RCS change rejected\n");
return -EBUSY; /* still busy with another command */
}
@@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
- DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "Command parser error, pm_iir 0x%08x\n", pm_iir);
}
void gen5_rps_irq_handler(struct intel_rps *rps)
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 3cdf5c24dbc5..2af97d954fc4 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -55,8 +55,11 @@
* - Public functions to init or apply the given workaround type.
*/
-static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
+static void wa_init_start(struct i915_wa_list *wal,
+ struct drm_i915_private *i915,
+ const char *name, const char *engine_name)
{
+ wal->i915 = i915;
wal->name = name;
wal->engine_name = engine_name;
}
@@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
if (!wal->count)
return;
- DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
- wal->wa_count, wal->name, wal->engine_name);
+ drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
+ wal->wa_count, wal->name, wal->engine_name);
}
static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
{
unsigned int addr = i915_mmio_reg_offset(wa->reg);
+ struct drm_i915_private *i915 = wal->i915;
unsigned int start = 0, end = wal->count;
const unsigned int grow = WA_LIST_CHUNK;
struct i915_wa *wa_;
@@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
GFP_KERNEL);
if (!list) {
- DRM_ERROR("No space for workaround init!\n");
+ drm_err(&i915->drm, "No space for workaround init!\n");
return;
}
@@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
wa_ = &wal->list[mid];
if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
- DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
- i915_mmio_reg_offset(wa_->reg),
- wa_->clr, wa_->set);
+ drm_err(&i915->drm,
+ "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
+ i915_mmio_reg_offset(wa_->reg),
+ wa_->clr, wa_->set);
wa_->set &= ~wa->clr;
}
@@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
{
struct drm_i915_private *i915 = engine->i915;
- wa_init_start(wal, name, engine->name);
+ wa_init_start(wal, i915, name, engine->name);
/* Applies to all engines */
/*
@@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
{
struct i915_wa_list *wal = >->wa_list;
- wa_init_start(wal, "GT", "global");
+ wa_init_start(wal, gt->i915, "GT", "global");
gt_init_workarounds(gt, wal);
wa_init_finish(wal);
}
@@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
}
static bool
-wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
+wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
+ const char *name, const char *from)
{
if ((cur ^ wa->set) & wa->read) {
- DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
- name, from, i915_mmio_reg_offset(wa->reg),
- cur, cur & wa->read, wa->set & wa->read);
+ drm_err(&i915->drm,
+ "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
+ name, from, i915_mmio_reg_offset(wa->reg),
+ cur, cur & wa->read, wa->set & wa->read);
return false;
}
@@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg);
- wa_verify(wa, val, wal->name, "application");
+ wa_verify(wal->i915, wa, val, wal->name, "application");
}
}
@@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
intel_uncore_forcewake_get__locked(uncore, fw);
for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
- ok &= wa_verify(wa, wa->is_mcr ?
+ ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg),
wal->name, from);
@@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
struct drm_i915_private *i915 = engine->i915;
struct i915_wa_list *w = &engine->whitelist;
- wa_init_start(w, "whitelist", engine->name);
+ wa_init_start(w, i915, "whitelist", engine->name);
if (IS_PONTEVECCHIO(i915))
pvc_whitelist_build(engine);
@@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
if (GRAPHICS_VER(engine->i915) < 4)
return;
- wa_init_start(wal, "engine", engine->name);
+ wa_init_start(wal, engine->i915, "engine", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
}
@@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
continue;
- if (!wa_verify(wa, results[i], wal->name, from))
+ if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
err = -ENXIO;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
index 7c8b01d00043..7e51e0219a5d 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
@@ -10,6 +10,8 @@
#include "i915_reg_defs.h"
+struct drm_i915_private;
+
struct i915_wa {
union {
i915_reg_t reg;
@@ -24,6 +26,8 @@ struct i915_wa {
};
struct i915_wa_list {
+ struct drm_i915_private *i915;
+
const char *name;
const char *engine_name;
struct i915_wa *list;
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index 21b1edc052f8..3dd761a690d7 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
memset(lists, 0, sizeof(*lists));
- wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
+ wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
gt_init_workarounds(gt, &lists->gt_wa_list);
wa_init_finish(&lists->gt_wa_list);
for_each_engine(engine, gt, id) {
struct i915_wa_list *wal = &lists->engine[id].wa_list;
- wa_init_start(wal, "REF", engine->name);
+ wa_init_start(wal, gt->i915, "REF", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ae987e92251d..6c7ac73b69a5 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
unsigned int flags;
int ret;
- DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
- val, val & DROP_ALL);
+ drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
+ val, val & DROP_ALL);
ret = gt_drop_caches(to_gt(i915), val);
if (ret)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 299f94a9fb87..8132743ca87e 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
struct i915_drm_client *client;
int ret = -ENOMEM;
- DRM_DEBUG("\n");
+ drm_dbg(&i915->drm, "\n");
file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
if (!file_priv)
diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
index 3047e80e1163..61ef2d9cfa62 100644
--- a/drivers/gpu/drm/i915/i915_getparam.c
+++ b/drivers/gpu/drm/i915/i915_getparam.c
@@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
value = i915_perf_oa_timestamp_frequency(i915);
break;
default:
- DRM_DEBUG("Unknown parameter %d\n", param->param);
+ drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index b0180ea38de0..6c20817f8967 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
KOBJ_CHANGE, parity_event);
- DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
- slice, row, bank, subbank);
+ drm_dbg(&dev_priv->drm,
+ "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
+ slice, row, bank, subbank);
kfree(parity_event[4]);
kfree(parity_event[3]);
@@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
} else {
- DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
+ drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
+ master_tile_ctl);
dg1_master_intr_enable(regs);
return IRQ_NONE;
}
@@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
u16 eir, u16 eir_stuck)
{
- DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
@@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
u32 eir, u32 eir_stuck)
{
- DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 0dd597a7a11f..9e6f060592d8 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
if (OA_TAKEN(hw_tail, tail) > report_size &&
__ratelimit(&stream->perf->tail_pointer_race))
- DRM_NOTE("unlanded report(s) head=0x%x "
- "tail=0x%x hw_tail=0x%x\n",
- head, tail, hw_tail);
+ drm_notice(&stream->uncore->i915->drm,
+ "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
+ head, tail, hw_tail);
stream->oa_buffer.tail = gtt_offset + tail;
stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
@@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
*/
if (report32[0] == 0) {
if (__ratelimit(&stream->perf->spurious_report_rs))
- DRM_NOTE("Skipping spurious, invalid OA report\n");
+ drm_notice(&uncore->i915->drm,
+ "Skipping spurious, invalid OA report\n");
continue;
}
@@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
free_noa_wait(stream);
if (perf->spurious_report_rs.missed) {
- DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
- perf->spurious_report_rs.missed);
+ drm_notice(>->i915->drm,
+ "%d spurious OA report notices suppressed due to ratelimiting\n",
+ perf->spurious_report_rs.missed);
}
}
diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
index 6ec9c9fb7b0d..00871ef99792 100644
--- a/drivers/gpu/drm/i915/i915_query.c
+++ b/drivers/gpu/drm/i915/i915_query.c
@@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
return total_size;
if (query_item->length < total_size) {
- DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
- query_item->length, total_size);
+ drm_dbg(&i915->drm,
+ "Invalid query config data item size=%u expected=%u\n",
+ query_item->length, total_size);
return -EINVAL;
}
@@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
} while (n_configs > alloc);
if (query_item->length < sizeof_perf_config_list(n_configs)) {
- DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
- query_item->length,
- sizeof_perf_config_list(n_configs));
+ drm_dbg(&i915->drm,
+ "Invalid query config list item size=%u expected=%zu\n",
+ query_item->length,
+ sizeof_perf_config_list(n_configs));
kfree(oa_config_ids);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index 1e2750210831..595e8b574990 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
static void i915_setup_error_capture(struct device *kdev)
{
if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
- DRM_ERROR("error_state sysfs setup failed\n");
+ drm_err(&kdev_minor_to_i915(kdev)->drm,
+ "error_state sysfs setup failed\n");
}
static void i915_teardown_error_capture(struct device *kdev)
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index c39488eb9eeb..3b969d679c1e 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
char buf[512];
if (!vma->node.stack) {
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
- vma->node.start, vma->node.size, reason);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm
+ "vma.node [%08llx + %08llx] %s: unknown owner\n",
+ vma->node.start, vma->node.size, reason);
return;
}
stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
- vma->node.start, vma->node.size, reason, buf);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "vma.node [%08llx + %08llx] %s: inserted at %s\n",
+ vma->node.start, vma->node.size, reason, buf);
}
#else
@@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
* attempt to find space.
*/
if (size > end) {
- DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
- size, flags & PIN_MAPPABLE ? "mappable" : "total",
- end);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
+ size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
return -ENOSPC;
}
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 2a3e2869fe71..6c25c9e7090a 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -178,8 +178,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack to clear.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
@@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
} while (!ack_detected && pass++ < 10);
- DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
- intel_uncore_forcewake_domain_to_str(d->id),
- type == ACK_SET ? "set" : "clear",
- fw_ack(d),
- pass);
+ drm_dbg(&d->uncore->i915->drm,
+ "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
+ intel_uncore_forcewake_domain_to_str(d->id),
+ type == ACK_SET ? "set" : "clear",
+ fw_ack(d),
+ pass);
return ack_detected ? 0 : -ETIMEDOUT;
}
@@ -255,8 +257,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack request.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 11:49 [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros Tvrtko Ursulin
@ 2022-11-08 12:01 ` Jani Nikula
2022-11-08 12:05 ` Tvrtko Ursulin
2022-11-08 12:05 ` [Intel-gfx] " Ville Syrjälä
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Jani Nikula @ 2022-11-08 12:01 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx; +Cc: John Harrison, dri-devel, Tvrtko Ursulin
On Tue, 08 Nov 2022, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Convert some usages of legacy DRM logging macros into versions which tell
> us on which device have the events occurred.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 23 ++++++----
> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
> .../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
> drivers/gpu/drm/i915/i915_perf.c | 14 +++---
> drivers/gpu/drm/i915/i915_query.c | 12 +++---
> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
> drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
> drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
> 19 files changed, 116 insertions(+), 81 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 01402f3c58f6..7f2831efc798 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
> }
>
> if (intel_engine_uses_guc(master)) {
> - DRM_DEBUG("bonding extension not supported with GuC submission");
> + drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
> return -ENODEV;
> }
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index 1160723c9d2d..1eb7b66191b2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
> return err;
> }
>
> -static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> +static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
> + struct drm_i915_gem_execbuffer2 *exec)
> {
> if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
> return -EINVAL;
> @@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> }
>
> if (exec->DR4 == 0xffffffff) {
> - DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
> + drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
> exec->DR4 = 0;
> }
> if (exec->DR1 || exec->DR4)
> @@ -2744,6 +2745,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> const struct drm_i915_gem_execbuffer_ext_timeline_fences *timeline_fences)
> {
> struct drm_i915_gem_exec_fence __user *user_fences;
> + struct drm_device *drm = &eb->i915->drm;
Elsewhere we've been pretty strict about not adding struct drm_device as
a local variable, just struct drm_i915_private *i915. We don't want to
have both, and in general it's more likely i915 is needed than
drm_device, if not now then in the future. Even if it means having to
use &i915->drm here.
BR,
Jani.
> u64 __user *user_values;
> struct eb_fence *f;
> u64 nfences;
> @@ -2799,7 +2801,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(drm, "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> @@ -2807,7 +2809,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> if (!fence && user_fence.flags &&
> !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(drm, "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -2816,7 +2818,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> err = dma_fence_chain_find_seqno(&fence, point);
>
> if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
> + drm_dbg(drm,
> + "Syncobj handle missing requested point %llu\n",
> + point);
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return err;
> @@ -2842,7 +2846,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> * 0) would break the timeline.
> */
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> - DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
> + drm_dbg(drm, "Trying to wait & signal the same timeline point.\n");
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return -EINVAL;
> @@ -2873,6 +2877,7 @@ static int add_fence_array(struct i915_execbuffer *eb)
> struct drm_i915_gem_execbuffer2 *args = eb->args;
> struct drm_i915_gem_exec_fence __user *user;
> unsigned long num_fences = args->num_cliprects;
> + struct drm_device *drm = &eb->i915->drm;
> struct eb_fence *f;
>
> if (!(args->flags & I915_EXEC_FENCE_ARRAY))
> @@ -2913,14 +2918,14 @@ static int add_fence_array(struct i915_execbuffer *eb)
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(drm, "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> fence = drm_syncobj_fence_get(syncobj);
> if (!fence) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(drm, "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -3515,7 +3520,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
> return -EINVAL;
> }
>
> - err = i915_gem_check_execbuffer(args);
> + err = i915_gem_check_execbuffer(i915, args);
> if (err)
> return err;
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> index 0187bc72310d..d92512780467 100644
> --- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> +++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> @@ -3921,6 +3921,7 @@ static struct intel_context *
> execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> unsigned long flags)
> {
> + struct drm_i915_private *i915 = siblings[0]->i915;
> struct virtual_engine *ve;
> unsigned int n;
> int err;
> @@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> if (!ve)
> return ERR_PTR(-ENOMEM);
>
> - ve->base.i915 = siblings[0]->i915;
> + ve->base.i915 = i915;
> ve->base.gt = siblings[0]->gt;
> ve->base.uncore = siblings[0]->uncore;
> ve->base.id = -1;
> @@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
>
> GEM_BUG_ON(!is_power_of_2(sibling->mask));
> if (sibling->mask & ve->base.mask) {
> - DRM_DEBUG("duplicate %s entry in load balancer\n",
> - sibling->name);
> + drm_dbg(&i915->drm,
> + "duplicate %s entry in load balancer\n",
> + sibling->name);
> err = -EINVAL;
> goto err_put;
> }
> @@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> */
> if (ve->base.class != OTHER_CLASS) {
> if (ve->base.class != sibling->class) {
> - DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
> - sibling->class, ve->base.class);
> + drm_dbg(&i915->drm,
> + "invalid mixing of engine class, sibling %d, already %d\n",
> + sibling->class, ve->base.class);
> err = -EINVAL;
> goto err_put;
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> index ea775e601686..995082d45cb2 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> @@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
> if (obj->bit_17 == NULL) {
> obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
> if (obj->bit_17 == NULL) {
> - DRM_ERROR("Failed to allocate memory for bit 17 "
> - "record\n");
> + drm_err(&to_i915(obj->base.dev)->drm,
> + "Failed to allocate memory for bit 17 record\n");
> return;
> }
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 8e914c4066ed..0ba7d6f36b28 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
>
> ret = i915_ppgtt_init_hw(gt);
> if (ret) {
> - DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
> + drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
> goto out;
> }
>
> @@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
> * some errors might have become stuck,
> * mask them.
> */
> - DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
> + drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
> rmw_set(uncore, EMR, eir);
> intel_uncore_write(uncore, GEN2_IIR,
> I915_MASTER_ERROR_INTERRUPT);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> index b197f0e9794f..4c8ddd074b78 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> @@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
> !time_after32(local_clock() >> 10, timeout_ts));
>
> if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
> - DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> - bank, bit, ident);
> + drm_err(>->i915->drm,
> + "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> + bank, bit, ident);
> return 0;
> }
>
> @@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
> if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
> GT_BSD_CS_ERROR_INTERRUPT |
> GT_CS_MASTER_ERROR_INTERRUPT))
> - DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
> + drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
> + gt_iir);
>
> if (gt_iir & GT_PARITY_ERROR(gt->i915))
> gen7_parity_error_irq_handler(gt, gt_iir);
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 6c34a83c24b3..effe60ac22cd 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
>
> rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
> if (rgvswctl & MEMCTL_CMD_STS) {
> - DRM_DEBUG("gpu busy, RCS change rejected\n");
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "gpu busy, RCS change rejected\n");
> return -EBUSY; /* still busy with another command */
> }
>
> @@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
> intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
>
> if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
> - DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "Command parser error, pm_iir 0x%08x\n", pm_iir);
> }
>
> void gen5_rps_irq_handler(struct intel_rps *rps)
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 3cdf5c24dbc5..2af97d954fc4 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -55,8 +55,11 @@
> * - Public functions to init or apply the given workaround type.
> */
>
> -static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
> +static void wa_init_start(struct i915_wa_list *wal,
> + struct drm_i915_private *i915,
> + const char *name, const char *engine_name)
> {
> + wal->i915 = i915;
> wal->name = name;
> wal->engine_name = engine_name;
> }
> @@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
> if (!wal->count)
> return;
>
> - DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
> - wal->wa_count, wal->name, wal->engine_name);
> + drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
> + wal->wa_count, wal->name, wal->engine_name);
> }
>
> static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> {
> unsigned int addr = i915_mmio_reg_offset(wa->reg);
> + struct drm_i915_private *i915 = wal->i915;
> unsigned int start = 0, end = wal->count;
> const unsigned int grow = WA_LIST_CHUNK;
> struct i915_wa *wa_;
> @@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> GFP_KERNEL);
> if (!list) {
> - DRM_ERROR("No space for workaround init!\n");
> + drm_err(&i915->drm, "No space for workaround init!\n");
> return;
> }
>
> @@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> wa_ = &wal->list[mid];
>
> if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
> - DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> - i915_mmio_reg_offset(wa_->reg),
> - wa_->clr, wa_->set);
> + drm_err(&i915->drm,
> + "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> + i915_mmio_reg_offset(wa_->reg),
> + wa_->clr, wa_->set);
>
> wa_->set &= ~wa->clr;
> }
> @@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
> {
> struct drm_i915_private *i915 = engine->i915;
>
> - wa_init_start(wal, name, engine->name);
> + wa_init_start(wal, i915, name, engine->name);
>
> /* Applies to all engines */
> /*
> @@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
> {
> struct i915_wa_list *wal = >->wa_list;
>
> - wa_init_start(wal, "GT", "global");
> + wa_init_start(wal, gt->i915, "GT", "global");
> gt_init_workarounds(gt, wal);
> wa_init_finish(wal);
> }
> @@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
> }
>
> static bool
> -wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
> +wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
> + const char *name, const char *from)
> {
> if ((cur ^ wa->set) & wa->read) {
> - DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> - name, from, i915_mmio_reg_offset(wa->reg),
> - cur, cur & wa->read, wa->set & wa->read);
> + drm_err(&i915->drm,
> + "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> + name, from, i915_mmio_reg_offset(wa->reg),
> + cur, cur & wa->read, wa->set & wa->read);
>
> return false;
> }
> @@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg);
>
> - wa_verify(wa, val, wal->name, "application");
> + wa_verify(wal->i915, wa, val, wal->name, "application");
> }
> }
>
> @@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
> intel_uncore_forcewake_get__locked(uncore, fw);
>
> for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
> - ok &= wa_verify(wa, wa->is_mcr ?
> + ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg),
> wal->name, from);
> @@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
> struct drm_i915_private *i915 = engine->i915;
> struct i915_wa_list *w = &engine->whitelist;
>
> - wa_init_start(w, "whitelist", engine->name);
> + wa_init_start(w, i915, "whitelist", engine->name);
>
> if (IS_PONTEVECCHIO(i915))
> pvc_whitelist_build(engine);
> @@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
> if (GRAPHICS_VER(engine->i915) < 4)
> return;
>
> - wa_init_start(wal, "engine", engine->name);
> + wa_init_start(wal, engine->i915, "engine", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
> }
> @@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
> if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
> continue;
>
> - if (!wa_verify(wa, results[i], wal->name, from))
> + if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
> err = -ENXIO;
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> index 7c8b01d00043..7e51e0219a5d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> @@ -10,6 +10,8 @@
>
> #include "i915_reg_defs.h"
>
> +struct drm_i915_private;
> +
> struct i915_wa {
> union {
> i915_reg_t reg;
> @@ -24,6 +26,8 @@ struct i915_wa {
> };
>
> struct i915_wa_list {
> + struct drm_i915_private *i915;
> +
> const char *name;
> const char *engine_name;
> struct i915_wa *list;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index 21b1edc052f8..3dd761a690d7 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
>
> memset(lists, 0, sizeof(*lists));
>
> - wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
> + wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
> gt_init_workarounds(gt, &lists->gt_wa_list);
> wa_init_finish(&lists->gt_wa_list);
>
> for_each_engine(engine, gt, id) {
> struct i915_wa_list *wal = &lists->engine[id].wa_list;
>
> - wa_init_start(wal, "REF", engine->name);
> + wa_init_start(wal, gt->i915, "REF", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index ae987e92251d..6c7ac73b69a5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
> unsigned int flags;
> int ret;
>
> - DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
> - val, val & DROP_ALL);
> + drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
> + val, val & DROP_ALL);
>
> ret = gt_drop_caches(to_gt(i915), val);
> if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 299f94a9fb87..8132743ca87e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
> struct i915_drm_client *client;
> int ret = -ENOMEM;
>
> - DRM_DEBUG("\n");
> + drm_dbg(&i915->drm, "\n");
>
> file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
> if (!file_priv)
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 3047e80e1163..61ef2d9cfa62 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> value = i915_perf_oa_timestamp_frequency(i915);
> break;
> default:
> - DRM_DEBUG("Unknown parameter %d\n", param->param);
> + drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b0180ea38de0..6c20817f8967 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
> kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
> KOBJ_CHANGE, parity_event);
>
> - DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> - slice, row, bank, subbank);
> + drm_dbg(&dev_priv->drm,
> + "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> + slice, row, bank, subbank);
>
> kfree(parity_event[4]);
> kfree(parity_event[3]);
> @@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
> } else {
> - DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
> + drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
> + master_tile_ctl);
> dg1_master_intr_enable(regs);
> return IRQ_NONE;
> }
> @@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
> static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u16 eir, u16 eir_stuck)
> {
> - DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
> @@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
> static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u32 eir, u32 eir_stuck)
> {
> - DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 0dd597a7a11f..9e6f060592d8 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
>
> if (OA_TAKEN(hw_tail, tail) > report_size &&
> __ratelimit(&stream->perf->tail_pointer_race))
> - DRM_NOTE("unlanded report(s) head=0x%x "
> - "tail=0x%x hw_tail=0x%x\n",
> - head, tail, hw_tail);
> + drm_notice(&stream->uncore->i915->drm,
> + "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> + head, tail, hw_tail);
>
> stream->oa_buffer.tail = gtt_offset + tail;
> stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
> @@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
> */
> if (report32[0] == 0) {
> if (__ratelimit(&stream->perf->spurious_report_rs))
> - DRM_NOTE("Skipping spurious, invalid OA report\n");
> + drm_notice(&uncore->i915->drm,
> + "Skipping spurious, invalid OA report\n");
> continue;
> }
>
> @@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
> free_noa_wait(stream);
>
> if (perf->spurious_report_rs.missed) {
> - DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
> - perf->spurious_report_rs.missed);
> + drm_notice(>->i915->drm,
> + "%d spurious OA report notices suppressed due to ratelimiting\n",
> + perf->spurious_report_rs.missed);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6ec9c9fb7b0d..00871ef99792 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
> return total_size;
>
> if (query_item->length < total_size) {
> - DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
> - query_item->length, total_size);
> + drm_dbg(&i915->drm,
> + "Invalid query config data item size=%u expected=%u\n",
> + query_item->length, total_size);
> return -EINVAL;
> }
>
> @@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
> } while (n_configs > alloc);
>
> if (query_item->length < sizeof_perf_config_list(n_configs)) {
> - DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
> - query_item->length,
> - sizeof_perf_config_list(n_configs));
> + drm_dbg(&i915->drm,
> + "Invalid query config list item size=%u expected=%zu\n",
> + query_item->length,
> + sizeof_perf_config_list(n_configs));
> kfree(oa_config_ids);
> return -EINVAL;
> }
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 1e2750210831..595e8b574990 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
> static void i915_setup_error_capture(struct device *kdev)
> {
> if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
> - DRM_ERROR("error_state sysfs setup failed\n");
> + drm_err(&kdev_minor_to_i915(kdev)->drm,
> + "error_state sysfs setup failed\n");
> }
>
> static void i915_teardown_error_capture(struct device *kdev)
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index c39488eb9eeb..3b969d679c1e 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
> char buf[512];
>
> if (!vma->node.stack) {
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
> - vma->node.start, vma->node.size, reason);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm
> + "vma.node [%08llx + %08llx] %s: unknown owner\n",
> + vma->node.start, vma->node.size, reason);
> return;
> }
>
> stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
> - vma->node.start, vma->node.size, reason, buf);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "vma.node [%08llx + %08llx] %s: inserted at %s\n",
> + vma->node.start, vma->node.size, reason, buf);
> }
>
> #else
> @@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
> * attempt to find space.
> */
> if (size > end) {
> - DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> - size, flags & PIN_MAPPABLE ? "mappable" : "total",
> - end);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> + size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
> return -ENOSPC;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 2a3e2869fe71..6c25c9e7090a 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -178,8 +178,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack to clear.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
> @@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
> fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
> } while (!ack_detected && pass++ < 10);
>
> - DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> - intel_uncore_forcewake_domain_to_str(d->id),
> - type == ACK_SET ? "set" : "clear",
> - fw_ack(d),
> - pass);
> + drm_dbg(&d->uncore->i915->drm,
> + "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> + intel_uncore_forcewake_domain_to_str(d->id),
> + type == ACK_SET ? "set" : "clear",
> + fw_ack(d),
> + pass);
>
> return ack_detected ? 0 : -ETIMEDOUT;
> }
> @@ -255,8 +257,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack request.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 11:49 [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros Tvrtko Ursulin
2022-11-08 12:01 ` Jani Nikula
@ 2022-11-08 12:05 ` Ville Syrjälä
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
2022-11-09 10:46 ` [PATCH v3] " Tvrtko Ursulin
3 siblings, 0 replies; 11+ messages in thread
From: Ville Syrjälä @ 2022-11-08 12:05 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Jani Nikula, Intel-gfx, dri-devel
> @@ -2744,6 +2745,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> const struct drm_i915_gem_execbuffer_ext_timeline_fences *timeline_fences)
> {
> struct drm_i915_gem_exec_fence __user *user_fences;
> + struct drm_device *drm = &eb->i915->drm;
We've said a firm "no" to drm_device pointers in display code at
least. If we want a local device pointer we always make it a 'i915'.
Otherwise you end up with annoying aliases all over the place.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 12:01 ` Jani Nikula
@ 2022-11-08 12:05 ` Tvrtko Ursulin
0 siblings, 0 replies; 11+ messages in thread
From: Tvrtko Ursulin @ 2022-11-08 12:05 UTC (permalink / raw)
To: Jani Nikula, Intel-gfx; +Cc: John Harrison, dri-devel, Tvrtko Ursulin
On 08/11/2022 12:01, Jani Nikula wrote:
> On Tue, 08 Nov 2022, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>
>> Convert some usages of legacy DRM logging macros into versions which tell
>> us on which device have the events occurred.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Cc: Jani Nikula <jani.nikula@intel.com>
>> Cc: John Harrison <John.C.Harrison@Intel.com>
>> ---
>> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
>> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 23 ++++++----
>> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
>> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
>> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
>> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
>> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
>> drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
>> .../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
>> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
>> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
>> drivers/gpu/drm/i915/i915_gem.c | 2 +-
>> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
>> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
>> drivers/gpu/drm/i915/i915_perf.c | 14 +++---
>> drivers/gpu/drm/i915/i915_query.c | 12 +++---
>> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
>> drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
>> drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
>> 19 files changed, 116 insertions(+), 81 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>> index 01402f3c58f6..7f2831efc798 100644
>> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>> @@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
>> }
>>
>> if (intel_engine_uses_guc(master)) {
>> - DRM_DEBUG("bonding extension not supported with GuC submission");
>> + drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
>> return -ENODEV;
>> }
>>
>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
>> index 1160723c9d2d..1eb7b66191b2 100644
>> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
>> @@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
>> return err;
>> }
>>
>> -static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
>> +static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
>> + struct drm_i915_gem_execbuffer2 *exec)
>> {
>> if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
>> return -EINVAL;
>> @@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
>> }
>>
>> if (exec->DR4 == 0xffffffff) {
>> - DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
>> + drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
>> exec->DR4 = 0;
>> }
>> if (exec->DR1 || exec->DR4)
>> @@ -2744,6 +2745,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>> const struct drm_i915_gem_execbuffer_ext_timeline_fences *timeline_fences)
>> {
>> struct drm_i915_gem_exec_fence __user *user_fences;
>> + struct drm_device *drm = &eb->i915->drm;
>
> Elsewhere we've been pretty strict about not adding struct drm_device as
> a local variable, just struct drm_i915_private *i915. We don't want to
> have both, and in general it's more likely i915 is needed than
> drm_device, if not now then in the future. Even if it means having to
> use &i915->drm here.
Yeah it smelled bad while I was typing it.. will change.
Regards,
Tvrtko
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 11:49 [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros Tvrtko Ursulin
2022-11-08 12:01 ` Jani Nikula
2022-11-08 12:05 ` [Intel-gfx] " Ville Syrjälä
@ 2022-11-08 12:26 ` Tvrtko Ursulin
2022-11-08 12:32 ` Jani Nikula
` (2 more replies)
2022-11-09 10:46 ` [PATCH v3] " Tvrtko Ursulin
3 siblings, 3 replies; 11+ messages in thread
From: Tvrtko Ursulin @ 2022-11-08 12:26 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula, John Harrison, dri-devel, Tvrtko Ursulin
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Convert some usages of legacy DRM logging macros into versions which tell
us on which device have the events occurred.
v2:
* Don't have struct drm_device as local. (Jani, Ville)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++----
.../drm/i915/gt/intel_execlists_submission.c | 13 +++---
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
.../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
.../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
drivers/gpu/drm/i915/i915_gem.c | 2 +-
drivers/gpu/drm/i915/i915_getparam.c | 2 +-
drivers/gpu/drm/i915/i915_irq.c | 12 +++---
drivers/gpu/drm/i915/i915_perf.c | 14 +++---
drivers/gpu/drm/i915/i915_query.c | 12 +++---
drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
19 files changed, 119 insertions(+), 81 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 01402f3c58f6..7f2831efc798 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
}
if (intel_engine_uses_guc(master)) {
- DRM_DEBUG("bonding extension not supported with GuC submission");
+ drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
return -ENODEV;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 1160723c9d2d..f65fd03f7cf2 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
return err;
}
-static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
+static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
+ struct drm_i915_gem_execbuffer2 *exec)
{
if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
return -EINVAL;
@@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
}
if (exec->DR4 == 0xffffffff) {
- DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
+ drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
exec->DR4 = 0;
}
if (exec->DR1 || exec->DR4)
@@ -2799,7 +2800,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(&eb->i915->drm,
+ "Invalid syncobj handle provided\n");
return -ENOENT;
}
@@ -2807,7 +2809,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
if (!fence && user_fence.flags &&
!(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -2816,7 +2819,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
err = dma_fence_chain_find_seqno(&fence, point);
if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle missing requested point %llu\n",
+ point);
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return err;
@@ -2842,7 +2847,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
* 0) would break the timeline.
*/
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
- DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
+ drm_dbg(&eb->i915->drm,
+ "Trying to wait & signal the same timeline point.\n");
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return -EINVAL;
@@ -2913,14 +2919,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(&eb->i915->drm,
+ "Invalid syncobj handle provided\n");
return -ENOENT;
}
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
fence = drm_syncobj_fence_get(syncobj);
if (!fence) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -3515,7 +3523,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
return -EINVAL;
}
- err = i915_gem_check_execbuffer(args);
+ err = i915_gem_check_execbuffer(i915, args);
if (err)
return err;
diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index 0187bc72310d..d92512780467 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -3921,6 +3921,7 @@ static struct intel_context *
execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
unsigned long flags)
{
+ struct drm_i915_private *i915 = siblings[0]->i915;
struct virtual_engine *ve;
unsigned int n;
int err;
@@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
if (!ve)
return ERR_PTR(-ENOMEM);
- ve->base.i915 = siblings[0]->i915;
+ ve->base.i915 = i915;
ve->base.gt = siblings[0]->gt;
ve->base.uncore = siblings[0]->uncore;
ve->base.id = -1;
@@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
GEM_BUG_ON(!is_power_of_2(sibling->mask));
if (sibling->mask & ve->base.mask) {
- DRM_DEBUG("duplicate %s entry in load balancer\n",
- sibling->name);
+ drm_dbg(&i915->drm,
+ "duplicate %s entry in load balancer\n",
+ sibling->name);
err = -EINVAL;
goto err_put;
}
@@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
*/
if (ve->base.class != OTHER_CLASS) {
if (ve->base.class != sibling->class) {
- DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
- sibling->class, ve->base.class);
+ drm_dbg(&i915->drm,
+ "invalid mixing of engine class, sibling %d, already %d\n",
+ sibling->class, ve->base.class);
err = -EINVAL;
goto err_put;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index ea775e601686..995082d45cb2 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
if (obj->bit_17 == NULL) {
obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
if (obj->bit_17 == NULL) {
- DRM_ERROR("Failed to allocate memory for bit 17 "
- "record\n");
+ drm_err(&to_i915(obj->base.dev)->drm,
+ "Failed to allocate memory for bit 17 record\n");
return;
}
}
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index 8e914c4066ed..0ba7d6f36b28 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
ret = i915_ppgtt_init_hw(gt);
if (ret) {
- DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
+ drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
goto out;
}
@@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
* some errors might have become stuck,
* mask them.
*/
- DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
+ drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
rmw_set(uncore, EMR, eir);
intel_uncore_write(uncore, GEN2_IIR,
I915_MASTER_ERROR_INTERRUPT);
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index b197f0e9794f..4c8ddd074b78 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
!time_after32(local_clock() >> 10, timeout_ts));
if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
- DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
- bank, bit, ident);
+ drm_err(>->i915->drm,
+ "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
+ bank, bit, ident);
return 0;
}
@@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
GT_BSD_CS_ERROR_INTERRUPT |
GT_CS_MASTER_ERROR_INTERRUPT))
- DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
+ drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
+ gt_iir);
if (gt_iir & GT_PARITY_ERROR(gt->i915))
gen7_parity_error_irq_handler(gt, gt_iir);
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 6c34a83c24b3..effe60ac22cd 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
if (rgvswctl & MEMCTL_CMD_STS) {
- DRM_DEBUG("gpu busy, RCS change rejected\n");
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "gpu busy, RCS change rejected\n");
return -EBUSY; /* still busy with another command */
}
@@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
- DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "Command parser error, pm_iir 0x%08x\n", pm_iir);
}
void gen5_rps_irq_handler(struct intel_rps *rps)
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 3cdf5c24dbc5..2af97d954fc4 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -55,8 +55,11 @@
* - Public functions to init or apply the given workaround type.
*/
-static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
+static void wa_init_start(struct i915_wa_list *wal,
+ struct drm_i915_private *i915,
+ const char *name, const char *engine_name)
{
+ wal->i915 = i915;
wal->name = name;
wal->engine_name = engine_name;
}
@@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
if (!wal->count)
return;
- DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
- wal->wa_count, wal->name, wal->engine_name);
+ drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
+ wal->wa_count, wal->name, wal->engine_name);
}
static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
{
unsigned int addr = i915_mmio_reg_offset(wa->reg);
+ struct drm_i915_private *i915 = wal->i915;
unsigned int start = 0, end = wal->count;
const unsigned int grow = WA_LIST_CHUNK;
struct i915_wa *wa_;
@@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
GFP_KERNEL);
if (!list) {
- DRM_ERROR("No space for workaround init!\n");
+ drm_err(&i915->drm, "No space for workaround init!\n");
return;
}
@@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
wa_ = &wal->list[mid];
if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
- DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
- i915_mmio_reg_offset(wa_->reg),
- wa_->clr, wa_->set);
+ drm_err(&i915->drm,
+ "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
+ i915_mmio_reg_offset(wa_->reg),
+ wa_->clr, wa_->set);
wa_->set &= ~wa->clr;
}
@@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
{
struct drm_i915_private *i915 = engine->i915;
- wa_init_start(wal, name, engine->name);
+ wa_init_start(wal, i915, name, engine->name);
/* Applies to all engines */
/*
@@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
{
struct i915_wa_list *wal = >->wa_list;
- wa_init_start(wal, "GT", "global");
+ wa_init_start(wal, gt->i915, "GT", "global");
gt_init_workarounds(gt, wal);
wa_init_finish(wal);
}
@@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
}
static bool
-wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
+wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
+ const char *name, const char *from)
{
if ((cur ^ wa->set) & wa->read) {
- DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
- name, from, i915_mmio_reg_offset(wa->reg),
- cur, cur & wa->read, wa->set & wa->read);
+ drm_err(&i915->drm,
+ "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
+ name, from, i915_mmio_reg_offset(wa->reg),
+ cur, cur & wa->read, wa->set & wa->read);
return false;
}
@@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg);
- wa_verify(wa, val, wal->name, "application");
+ wa_verify(wal->i915, wa, val, wal->name, "application");
}
}
@@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
intel_uncore_forcewake_get__locked(uncore, fw);
for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
- ok &= wa_verify(wa, wa->is_mcr ?
+ ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg),
wal->name, from);
@@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
struct drm_i915_private *i915 = engine->i915;
struct i915_wa_list *w = &engine->whitelist;
- wa_init_start(w, "whitelist", engine->name);
+ wa_init_start(w, i915, "whitelist", engine->name);
if (IS_PONTEVECCHIO(i915))
pvc_whitelist_build(engine);
@@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
if (GRAPHICS_VER(engine->i915) < 4)
return;
- wa_init_start(wal, "engine", engine->name);
+ wa_init_start(wal, engine->i915, "engine", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
}
@@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
continue;
- if (!wa_verify(wa, results[i], wal->name, from))
+ if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
err = -ENXIO;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
index 7c8b01d00043..7e51e0219a5d 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
@@ -10,6 +10,8 @@
#include "i915_reg_defs.h"
+struct drm_i915_private;
+
struct i915_wa {
union {
i915_reg_t reg;
@@ -24,6 +26,8 @@ struct i915_wa {
};
struct i915_wa_list {
+ struct drm_i915_private *i915;
+
const char *name;
const char *engine_name;
struct i915_wa *list;
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index 21b1edc052f8..3dd761a690d7 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
memset(lists, 0, sizeof(*lists));
- wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
+ wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
gt_init_workarounds(gt, &lists->gt_wa_list);
wa_init_finish(&lists->gt_wa_list);
for_each_engine(engine, gt, id) {
struct i915_wa_list *wal = &lists->engine[id].wa_list;
- wa_init_start(wal, "REF", engine->name);
+ wa_init_start(wal, gt->i915, "REF", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ae987e92251d..6c7ac73b69a5 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
unsigned int flags;
int ret;
- DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
- val, val & DROP_ALL);
+ drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
+ val, val & DROP_ALL);
ret = gt_drop_caches(to_gt(i915), val);
if (ret)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 299f94a9fb87..8132743ca87e 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
struct i915_drm_client *client;
int ret = -ENOMEM;
- DRM_DEBUG("\n");
+ drm_dbg(&i915->drm, "\n");
file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
if (!file_priv)
diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
index 3047e80e1163..61ef2d9cfa62 100644
--- a/drivers/gpu/drm/i915/i915_getparam.c
+++ b/drivers/gpu/drm/i915/i915_getparam.c
@@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
value = i915_perf_oa_timestamp_frequency(i915);
break;
default:
- DRM_DEBUG("Unknown parameter %d\n", param->param);
+ drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index b0180ea38de0..6c20817f8967 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
KOBJ_CHANGE, parity_event);
- DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
- slice, row, bank, subbank);
+ drm_dbg(&dev_priv->drm,
+ "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
+ slice, row, bank, subbank);
kfree(parity_event[4]);
kfree(parity_event[3]);
@@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
} else {
- DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
+ drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
+ master_tile_ctl);
dg1_master_intr_enable(regs);
return IRQ_NONE;
}
@@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
u16 eir, u16 eir_stuck)
{
- DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
@@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
u32 eir, u32 eir_stuck)
{
- DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 0dd597a7a11f..9e6f060592d8 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
if (OA_TAKEN(hw_tail, tail) > report_size &&
__ratelimit(&stream->perf->tail_pointer_race))
- DRM_NOTE("unlanded report(s) head=0x%x "
- "tail=0x%x hw_tail=0x%x\n",
- head, tail, hw_tail);
+ drm_notice(&stream->uncore->i915->drm,
+ "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
+ head, tail, hw_tail);
stream->oa_buffer.tail = gtt_offset + tail;
stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
@@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
*/
if (report32[0] == 0) {
if (__ratelimit(&stream->perf->spurious_report_rs))
- DRM_NOTE("Skipping spurious, invalid OA report\n");
+ drm_notice(&uncore->i915->drm,
+ "Skipping spurious, invalid OA report\n");
continue;
}
@@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
free_noa_wait(stream);
if (perf->spurious_report_rs.missed) {
- DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
- perf->spurious_report_rs.missed);
+ drm_notice(>->i915->drm,
+ "%d spurious OA report notices suppressed due to ratelimiting\n",
+ perf->spurious_report_rs.missed);
}
}
diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
index 6ec9c9fb7b0d..00871ef99792 100644
--- a/drivers/gpu/drm/i915/i915_query.c
+++ b/drivers/gpu/drm/i915/i915_query.c
@@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
return total_size;
if (query_item->length < total_size) {
- DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
- query_item->length, total_size);
+ drm_dbg(&i915->drm,
+ "Invalid query config data item size=%u expected=%u\n",
+ query_item->length, total_size);
return -EINVAL;
}
@@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
} while (n_configs > alloc);
if (query_item->length < sizeof_perf_config_list(n_configs)) {
- DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
- query_item->length,
- sizeof_perf_config_list(n_configs));
+ drm_dbg(&i915->drm,
+ "Invalid query config list item size=%u expected=%zu\n",
+ query_item->length,
+ sizeof_perf_config_list(n_configs));
kfree(oa_config_ids);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index 1e2750210831..595e8b574990 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
static void i915_setup_error_capture(struct device *kdev)
{
if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
- DRM_ERROR("error_state sysfs setup failed\n");
+ drm_err(&kdev_minor_to_i915(kdev)->drm,
+ "error_state sysfs setup failed\n");
}
static void i915_teardown_error_capture(struct device *kdev)
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index c39488eb9eeb..3b969d679c1e 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
char buf[512];
if (!vma->node.stack) {
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
- vma->node.start, vma->node.size, reason);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm
+ "vma.node [%08llx + %08llx] %s: unknown owner\n",
+ vma->node.start, vma->node.size, reason);
return;
}
stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
- vma->node.start, vma->node.size, reason, buf);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "vma.node [%08llx + %08llx] %s: inserted at %s\n",
+ vma->node.start, vma->node.size, reason, buf);
}
#else
@@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
* attempt to find space.
*/
if (size > end) {
- DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
- size, flags & PIN_MAPPABLE ? "mappable" : "total",
- end);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
+ size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
return -ENOSPC;
}
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 2a3e2869fe71..6c25c9e7090a 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -178,8 +178,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack to clear.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
@@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
} while (!ack_detected && pass++ < 10);
- DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
- intel_uncore_forcewake_domain_to_str(d->id),
- type == ACK_SET ? "set" : "clear",
- fw_ack(d),
- pass);
+ drm_dbg(&d->uncore->i915->drm,
+ "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
+ intel_uncore_forcewake_domain_to_str(d->id),
+ type == ACK_SET ? "set" : "clear",
+ fw_ack(d),
+ pass);
return ack_detected ? 0 : -ETIMEDOUT;
}
@@ -255,8 +257,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack request.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
@ 2022-11-08 12:32 ` Jani Nikula
2022-11-08 15:15 ` [Intel-gfx] " Andrzej Hajda
2022-11-08 19:53 ` John Harrison
2 siblings, 0 replies; 11+ messages in thread
From: Jani Nikula @ 2022-11-08 12:32 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx; +Cc: John Harrison, dri-devel, Tvrtko Ursulin
On Tue, 08 Nov 2022, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Convert some usages of legacy DRM logging macros into versions which tell
> us on which device have the events occurred.
Acked-by: Jani Nikula <jani.nikula@intel.com>
>
> v2:
> * Don't have struct drm_device as local. (Jani, Ville)
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++----
> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
> .../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
> drivers/gpu/drm/i915/i915_perf.c | 14 +++---
> drivers/gpu/drm/i915/i915_query.c | 12 +++---
> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
> drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
> drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
> 19 files changed, 119 insertions(+), 81 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 01402f3c58f6..7f2831efc798 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
> }
>
> if (intel_engine_uses_guc(master)) {
> - DRM_DEBUG("bonding extension not supported with GuC submission");
> + drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
> return -ENODEV;
> }
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index 1160723c9d2d..f65fd03f7cf2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
> return err;
> }
>
> -static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> +static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
> + struct drm_i915_gem_execbuffer2 *exec)
> {
> if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
> return -EINVAL;
> @@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> }
>
> if (exec->DR4 == 0xffffffff) {
> - DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
> + drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
> exec->DR4 = 0;
> }
> if (exec->DR1 || exec->DR4)
> @@ -2799,7 +2800,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> @@ -2807,7 +2809,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> if (!fence && user_fence.flags &&
> !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -2816,7 +2819,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> err = dma_fence_chain_find_seqno(&fence, point);
>
> if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle missing requested point %llu\n",
> + point);
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return err;
> @@ -2842,7 +2847,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> * 0) would break the timeline.
> */
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> - DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
> + drm_dbg(&eb->i915->drm,
> + "Trying to wait & signal the same timeline point.\n");
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return -EINVAL;
> @@ -2913,14 +2919,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> fence = drm_syncobj_fence_get(syncobj);
> if (!fence) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -3515,7 +3523,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
> return -EINVAL;
> }
>
> - err = i915_gem_check_execbuffer(args);
> + err = i915_gem_check_execbuffer(i915, args);
> if (err)
> return err;
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> index 0187bc72310d..d92512780467 100644
> --- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> +++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> @@ -3921,6 +3921,7 @@ static struct intel_context *
> execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> unsigned long flags)
> {
> + struct drm_i915_private *i915 = siblings[0]->i915;
> struct virtual_engine *ve;
> unsigned int n;
> int err;
> @@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> if (!ve)
> return ERR_PTR(-ENOMEM);
>
> - ve->base.i915 = siblings[0]->i915;
> + ve->base.i915 = i915;
> ve->base.gt = siblings[0]->gt;
> ve->base.uncore = siblings[0]->uncore;
> ve->base.id = -1;
> @@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
>
> GEM_BUG_ON(!is_power_of_2(sibling->mask));
> if (sibling->mask & ve->base.mask) {
> - DRM_DEBUG("duplicate %s entry in load balancer\n",
> - sibling->name);
> + drm_dbg(&i915->drm,
> + "duplicate %s entry in load balancer\n",
> + sibling->name);
> err = -EINVAL;
> goto err_put;
> }
> @@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> */
> if (ve->base.class != OTHER_CLASS) {
> if (ve->base.class != sibling->class) {
> - DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
> - sibling->class, ve->base.class);
> + drm_dbg(&i915->drm,
> + "invalid mixing of engine class, sibling %d, already %d\n",
> + sibling->class, ve->base.class);
> err = -EINVAL;
> goto err_put;
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> index ea775e601686..995082d45cb2 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> @@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
> if (obj->bit_17 == NULL) {
> obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
> if (obj->bit_17 == NULL) {
> - DRM_ERROR("Failed to allocate memory for bit 17 "
> - "record\n");
> + drm_err(&to_i915(obj->base.dev)->drm,
> + "Failed to allocate memory for bit 17 record\n");
> return;
> }
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 8e914c4066ed..0ba7d6f36b28 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
>
> ret = i915_ppgtt_init_hw(gt);
> if (ret) {
> - DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
> + drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
> goto out;
> }
>
> @@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
> * some errors might have become stuck,
> * mask them.
> */
> - DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
> + drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
> rmw_set(uncore, EMR, eir);
> intel_uncore_write(uncore, GEN2_IIR,
> I915_MASTER_ERROR_INTERRUPT);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> index b197f0e9794f..4c8ddd074b78 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> @@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
> !time_after32(local_clock() >> 10, timeout_ts));
>
> if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
> - DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> - bank, bit, ident);
> + drm_err(>->i915->drm,
> + "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> + bank, bit, ident);
> return 0;
> }
>
> @@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
> if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
> GT_BSD_CS_ERROR_INTERRUPT |
> GT_CS_MASTER_ERROR_INTERRUPT))
> - DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
> + drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
> + gt_iir);
>
> if (gt_iir & GT_PARITY_ERROR(gt->i915))
> gen7_parity_error_irq_handler(gt, gt_iir);
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 6c34a83c24b3..effe60ac22cd 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
>
> rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
> if (rgvswctl & MEMCTL_CMD_STS) {
> - DRM_DEBUG("gpu busy, RCS change rejected\n");
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "gpu busy, RCS change rejected\n");
> return -EBUSY; /* still busy with another command */
> }
>
> @@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
> intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
>
> if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
> - DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "Command parser error, pm_iir 0x%08x\n", pm_iir);
> }
>
> void gen5_rps_irq_handler(struct intel_rps *rps)
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 3cdf5c24dbc5..2af97d954fc4 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -55,8 +55,11 @@
> * - Public functions to init or apply the given workaround type.
> */
>
> -static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
> +static void wa_init_start(struct i915_wa_list *wal,
> + struct drm_i915_private *i915,
> + const char *name, const char *engine_name)
> {
> + wal->i915 = i915;
> wal->name = name;
> wal->engine_name = engine_name;
> }
> @@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
> if (!wal->count)
> return;
>
> - DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
> - wal->wa_count, wal->name, wal->engine_name);
> + drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
> + wal->wa_count, wal->name, wal->engine_name);
> }
>
> static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> {
> unsigned int addr = i915_mmio_reg_offset(wa->reg);
> + struct drm_i915_private *i915 = wal->i915;
> unsigned int start = 0, end = wal->count;
> const unsigned int grow = WA_LIST_CHUNK;
> struct i915_wa *wa_;
> @@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> GFP_KERNEL);
> if (!list) {
> - DRM_ERROR("No space for workaround init!\n");
> + drm_err(&i915->drm, "No space for workaround init!\n");
> return;
> }
>
> @@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> wa_ = &wal->list[mid];
>
> if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
> - DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> - i915_mmio_reg_offset(wa_->reg),
> - wa_->clr, wa_->set);
> + drm_err(&i915->drm,
> + "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> + i915_mmio_reg_offset(wa_->reg),
> + wa_->clr, wa_->set);
>
> wa_->set &= ~wa->clr;
> }
> @@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
> {
> struct drm_i915_private *i915 = engine->i915;
>
> - wa_init_start(wal, name, engine->name);
> + wa_init_start(wal, i915, name, engine->name);
>
> /* Applies to all engines */
> /*
> @@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
> {
> struct i915_wa_list *wal = >->wa_list;
>
> - wa_init_start(wal, "GT", "global");
> + wa_init_start(wal, gt->i915, "GT", "global");
> gt_init_workarounds(gt, wal);
> wa_init_finish(wal);
> }
> @@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
> }
>
> static bool
> -wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
> +wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
> + const char *name, const char *from)
> {
> if ((cur ^ wa->set) & wa->read) {
> - DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> - name, from, i915_mmio_reg_offset(wa->reg),
> - cur, cur & wa->read, wa->set & wa->read);
> + drm_err(&i915->drm,
> + "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> + name, from, i915_mmio_reg_offset(wa->reg),
> + cur, cur & wa->read, wa->set & wa->read);
>
> return false;
> }
> @@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg);
>
> - wa_verify(wa, val, wal->name, "application");
> + wa_verify(wal->i915, wa, val, wal->name, "application");
> }
> }
>
> @@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
> intel_uncore_forcewake_get__locked(uncore, fw);
>
> for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
> - ok &= wa_verify(wa, wa->is_mcr ?
> + ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg),
> wal->name, from);
> @@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
> struct drm_i915_private *i915 = engine->i915;
> struct i915_wa_list *w = &engine->whitelist;
>
> - wa_init_start(w, "whitelist", engine->name);
> + wa_init_start(w, i915, "whitelist", engine->name);
>
> if (IS_PONTEVECCHIO(i915))
> pvc_whitelist_build(engine);
> @@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
> if (GRAPHICS_VER(engine->i915) < 4)
> return;
>
> - wa_init_start(wal, "engine", engine->name);
> + wa_init_start(wal, engine->i915, "engine", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
> }
> @@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
> if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
> continue;
>
> - if (!wa_verify(wa, results[i], wal->name, from))
> + if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
> err = -ENXIO;
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> index 7c8b01d00043..7e51e0219a5d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> @@ -10,6 +10,8 @@
>
> #include "i915_reg_defs.h"
>
> +struct drm_i915_private;
> +
> struct i915_wa {
> union {
> i915_reg_t reg;
> @@ -24,6 +26,8 @@ struct i915_wa {
> };
>
> struct i915_wa_list {
> + struct drm_i915_private *i915;
> +
> const char *name;
> const char *engine_name;
> struct i915_wa *list;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index 21b1edc052f8..3dd761a690d7 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
>
> memset(lists, 0, sizeof(*lists));
>
> - wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
> + wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
> gt_init_workarounds(gt, &lists->gt_wa_list);
> wa_init_finish(&lists->gt_wa_list);
>
> for_each_engine(engine, gt, id) {
> struct i915_wa_list *wal = &lists->engine[id].wa_list;
>
> - wa_init_start(wal, "REF", engine->name);
> + wa_init_start(wal, gt->i915, "REF", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index ae987e92251d..6c7ac73b69a5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
> unsigned int flags;
> int ret;
>
> - DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
> - val, val & DROP_ALL);
> + drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
> + val, val & DROP_ALL);
>
> ret = gt_drop_caches(to_gt(i915), val);
> if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 299f94a9fb87..8132743ca87e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
> struct i915_drm_client *client;
> int ret = -ENOMEM;
>
> - DRM_DEBUG("\n");
> + drm_dbg(&i915->drm, "\n");
>
> file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
> if (!file_priv)
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 3047e80e1163..61ef2d9cfa62 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> value = i915_perf_oa_timestamp_frequency(i915);
> break;
> default:
> - DRM_DEBUG("Unknown parameter %d\n", param->param);
> + drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b0180ea38de0..6c20817f8967 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
> kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
> KOBJ_CHANGE, parity_event);
>
> - DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> - slice, row, bank, subbank);
> + drm_dbg(&dev_priv->drm,
> + "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> + slice, row, bank, subbank);
>
> kfree(parity_event[4]);
> kfree(parity_event[3]);
> @@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
> } else {
> - DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
> + drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
> + master_tile_ctl);
> dg1_master_intr_enable(regs);
> return IRQ_NONE;
> }
> @@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
> static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u16 eir, u16 eir_stuck)
> {
> - DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
> @@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
> static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u32 eir, u32 eir_stuck)
> {
> - DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 0dd597a7a11f..9e6f060592d8 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
>
> if (OA_TAKEN(hw_tail, tail) > report_size &&
> __ratelimit(&stream->perf->tail_pointer_race))
> - DRM_NOTE("unlanded report(s) head=0x%x "
> - "tail=0x%x hw_tail=0x%x\n",
> - head, tail, hw_tail);
> + drm_notice(&stream->uncore->i915->drm,
> + "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> + head, tail, hw_tail);
>
> stream->oa_buffer.tail = gtt_offset + tail;
> stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
> @@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
> */
> if (report32[0] == 0) {
> if (__ratelimit(&stream->perf->spurious_report_rs))
> - DRM_NOTE("Skipping spurious, invalid OA report\n");
> + drm_notice(&uncore->i915->drm,
> + "Skipping spurious, invalid OA report\n");
> continue;
> }
>
> @@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
> free_noa_wait(stream);
>
> if (perf->spurious_report_rs.missed) {
> - DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
> - perf->spurious_report_rs.missed);
> + drm_notice(>->i915->drm,
> + "%d spurious OA report notices suppressed due to ratelimiting\n",
> + perf->spurious_report_rs.missed);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6ec9c9fb7b0d..00871ef99792 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
> return total_size;
>
> if (query_item->length < total_size) {
> - DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
> - query_item->length, total_size);
> + drm_dbg(&i915->drm,
> + "Invalid query config data item size=%u expected=%u\n",
> + query_item->length, total_size);
> return -EINVAL;
> }
>
> @@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
> } while (n_configs > alloc);
>
> if (query_item->length < sizeof_perf_config_list(n_configs)) {
> - DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
> - query_item->length,
> - sizeof_perf_config_list(n_configs));
> + drm_dbg(&i915->drm,
> + "Invalid query config list item size=%u expected=%zu\n",
> + query_item->length,
> + sizeof_perf_config_list(n_configs));
> kfree(oa_config_ids);
> return -EINVAL;
> }
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 1e2750210831..595e8b574990 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
> static void i915_setup_error_capture(struct device *kdev)
> {
> if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
> - DRM_ERROR("error_state sysfs setup failed\n");
> + drm_err(&kdev_minor_to_i915(kdev)->drm,
> + "error_state sysfs setup failed\n");
> }
>
> static void i915_teardown_error_capture(struct device *kdev)
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index c39488eb9eeb..3b969d679c1e 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
> char buf[512];
>
> if (!vma->node.stack) {
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
> - vma->node.start, vma->node.size, reason);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm
> + "vma.node [%08llx + %08llx] %s: unknown owner\n",
> + vma->node.start, vma->node.size, reason);
> return;
> }
>
> stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
> - vma->node.start, vma->node.size, reason, buf);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "vma.node [%08llx + %08llx] %s: inserted at %s\n",
> + vma->node.start, vma->node.size, reason, buf);
> }
>
> #else
> @@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
> * attempt to find space.
> */
> if (size > end) {
> - DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> - size, flags & PIN_MAPPABLE ? "mappable" : "total",
> - end);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> + size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
> return -ENOSPC;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 2a3e2869fe71..6c25c9e7090a 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -178,8 +178,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack to clear.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
> @@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
> fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
> } while (!ack_detected && pass++ < 10);
>
> - DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> - intel_uncore_forcewake_domain_to_str(d->id),
> - type == ACK_SET ? "set" : "clear",
> - fw_ack(d),
> - pass);
> + drm_dbg(&d->uncore->i915->drm,
> + "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> + intel_uncore_forcewake_domain_to_str(d->id),
> + type == ACK_SET ? "set" : "clear",
> + fw_ack(d),
> + pass);
>
> return ack_detected ? 0 : -ETIMEDOUT;
> }
> @@ -255,8 +257,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack request.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Intel-gfx] [PATCH v2] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
2022-11-08 12:32 ` Jani Nikula
@ 2022-11-08 15:15 ` Andrzej Hajda
2022-11-08 19:53 ` John Harrison
2 siblings, 0 replies; 11+ messages in thread
From: Andrzej Hajda @ 2022-11-08 15:15 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx; +Cc: Jani Nikula, dri-devel
On 08.11.2022 13:26, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Convert some usages of legacy DRM logging macros into versions which tell
> us on which device have the events occurred.
>
> v2:
> * Don't have struct drm_device as local. (Jani, Ville)
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Nice work.
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Regards
Andrzej
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++----
> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
> .../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
> drivers/gpu/drm/i915/i915_perf.c | 14 +++---
> drivers/gpu/drm/i915/i915_query.c | 12 +++---
> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
> drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
> drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
> 19 files changed, 119 insertions(+), 81 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 01402f3c58f6..7f2831efc798 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
> }
>
> if (intel_engine_uses_guc(master)) {
> - DRM_DEBUG("bonding extension not supported with GuC submission");
> + drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
> return -ENODEV;
> }
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index 1160723c9d2d..f65fd03f7cf2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
> return err;
> }
>
> -static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> +static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
> + struct drm_i915_gem_execbuffer2 *exec)
> {
> if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
> return -EINVAL;
> @@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> }
>
> if (exec->DR4 == 0xffffffff) {
> - DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
> + drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
> exec->DR4 = 0;
> }
> if (exec->DR1 || exec->DR4)
> @@ -2799,7 +2800,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> @@ -2807,7 +2809,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> if (!fence && user_fence.flags &&
> !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -2816,7 +2819,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> err = dma_fence_chain_find_seqno(&fence, point);
>
> if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle missing requested point %llu\n",
> + point);
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return err;
> @@ -2842,7 +2847,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> * 0) would break the timeline.
> */
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> - DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
> + drm_dbg(&eb->i915->drm,
> + "Trying to wait & signal the same timeline point.\n");
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return -EINVAL;
> @@ -2913,14 +2919,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> fence = drm_syncobj_fence_get(syncobj);
> if (!fence) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -3515,7 +3523,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
> return -EINVAL;
> }
>
> - err = i915_gem_check_execbuffer(args);
> + err = i915_gem_check_execbuffer(i915, args);
> if (err)
> return err;
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> index 0187bc72310d..d92512780467 100644
> --- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> +++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> @@ -3921,6 +3921,7 @@ static struct intel_context *
> execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> unsigned long flags)
> {
> + struct drm_i915_private *i915 = siblings[0]->i915;
> struct virtual_engine *ve;
> unsigned int n;
> int err;
> @@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> if (!ve)
> return ERR_PTR(-ENOMEM);
>
> - ve->base.i915 = siblings[0]->i915;
> + ve->base.i915 = i915;
> ve->base.gt = siblings[0]->gt;
> ve->base.uncore = siblings[0]->uncore;
> ve->base.id = -1;
> @@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
>
> GEM_BUG_ON(!is_power_of_2(sibling->mask));
> if (sibling->mask & ve->base.mask) {
> - DRM_DEBUG("duplicate %s entry in load balancer\n",
> - sibling->name);
> + drm_dbg(&i915->drm,
> + "duplicate %s entry in load balancer\n",
> + sibling->name);
> err = -EINVAL;
> goto err_put;
> }
> @@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> */
> if (ve->base.class != OTHER_CLASS) {
> if (ve->base.class != sibling->class) {
> - DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
> - sibling->class, ve->base.class);
> + drm_dbg(&i915->drm,
> + "invalid mixing of engine class, sibling %d, already %d\n",
> + sibling->class, ve->base.class);
> err = -EINVAL;
> goto err_put;
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> index ea775e601686..995082d45cb2 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> @@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
> if (obj->bit_17 == NULL) {
> obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
> if (obj->bit_17 == NULL) {
> - DRM_ERROR("Failed to allocate memory for bit 17 "
> - "record\n");
> + drm_err(&to_i915(obj->base.dev)->drm,
> + "Failed to allocate memory for bit 17 record\n");
> return;
> }
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 8e914c4066ed..0ba7d6f36b28 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
>
> ret = i915_ppgtt_init_hw(gt);
> if (ret) {
> - DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
> + drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
> goto out;
> }
>
> @@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
> * some errors might have become stuck,
> * mask them.
> */
> - DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
> + drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
> rmw_set(uncore, EMR, eir);
> intel_uncore_write(uncore, GEN2_IIR,
> I915_MASTER_ERROR_INTERRUPT);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> index b197f0e9794f..4c8ddd074b78 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> @@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
> !time_after32(local_clock() >> 10, timeout_ts));
>
> if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
> - DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> - bank, bit, ident);
> + drm_err(>->i915->drm,
> + "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> + bank, bit, ident);
> return 0;
> }
>
> @@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
> if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
> GT_BSD_CS_ERROR_INTERRUPT |
> GT_CS_MASTER_ERROR_INTERRUPT))
> - DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
> + drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
> + gt_iir);
>
> if (gt_iir & GT_PARITY_ERROR(gt->i915))
> gen7_parity_error_irq_handler(gt, gt_iir);
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 6c34a83c24b3..effe60ac22cd 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
>
> rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
> if (rgvswctl & MEMCTL_CMD_STS) {
> - DRM_DEBUG("gpu busy, RCS change rejected\n");
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "gpu busy, RCS change rejected\n");
> return -EBUSY; /* still busy with another command */
> }
>
> @@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
> intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
>
> if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
> - DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "Command parser error, pm_iir 0x%08x\n", pm_iir);
> }
>
> void gen5_rps_irq_handler(struct intel_rps *rps)
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 3cdf5c24dbc5..2af97d954fc4 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -55,8 +55,11 @@
> * - Public functions to init or apply the given workaround type.
> */
>
> -static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
> +static void wa_init_start(struct i915_wa_list *wal,
> + struct drm_i915_private *i915,
> + const char *name, const char *engine_name)
> {
> + wal->i915 = i915;
> wal->name = name;
> wal->engine_name = engine_name;
> }
> @@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
> if (!wal->count)
> return;
>
> - DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
> - wal->wa_count, wal->name, wal->engine_name);
> + drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
> + wal->wa_count, wal->name, wal->engine_name);
> }
>
> static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> {
> unsigned int addr = i915_mmio_reg_offset(wa->reg);
> + struct drm_i915_private *i915 = wal->i915;
> unsigned int start = 0, end = wal->count;
> const unsigned int grow = WA_LIST_CHUNK;
> struct i915_wa *wa_;
> @@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> GFP_KERNEL);
> if (!list) {
> - DRM_ERROR("No space for workaround init!\n");
> + drm_err(&i915->drm, "No space for workaround init!\n");
> return;
> }
>
> @@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> wa_ = &wal->list[mid];
>
> if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
> - DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> - i915_mmio_reg_offset(wa_->reg),
> - wa_->clr, wa_->set);
> + drm_err(&i915->drm,
> + "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> + i915_mmio_reg_offset(wa_->reg),
> + wa_->clr, wa_->set);
>
> wa_->set &= ~wa->clr;
> }
> @@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
> {
> struct drm_i915_private *i915 = engine->i915;
>
> - wa_init_start(wal, name, engine->name);
> + wa_init_start(wal, i915, name, engine->name);
>
> /* Applies to all engines */
> /*
> @@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
> {
> struct i915_wa_list *wal = >->wa_list;
>
> - wa_init_start(wal, "GT", "global");
> + wa_init_start(wal, gt->i915, "GT", "global");
> gt_init_workarounds(gt, wal);
> wa_init_finish(wal);
> }
> @@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
> }
>
> static bool
> -wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
> +wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
> + const char *name, const char *from)
> {
> if ((cur ^ wa->set) & wa->read) {
> - DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> - name, from, i915_mmio_reg_offset(wa->reg),
> - cur, cur & wa->read, wa->set & wa->read);
> + drm_err(&i915->drm,
> + "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> + name, from, i915_mmio_reg_offset(wa->reg),
> + cur, cur & wa->read, wa->set & wa->read);
>
> return false;
> }
> @@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg);
>
> - wa_verify(wa, val, wal->name, "application");
> + wa_verify(wal->i915, wa, val, wal->name, "application");
> }
> }
>
> @@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
> intel_uncore_forcewake_get__locked(uncore, fw);
>
> for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
> - ok &= wa_verify(wa, wa->is_mcr ?
> + ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg),
> wal->name, from);
> @@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
> struct drm_i915_private *i915 = engine->i915;
> struct i915_wa_list *w = &engine->whitelist;
>
> - wa_init_start(w, "whitelist", engine->name);
> + wa_init_start(w, i915, "whitelist", engine->name);
>
> if (IS_PONTEVECCHIO(i915))
> pvc_whitelist_build(engine);
> @@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
> if (GRAPHICS_VER(engine->i915) < 4)
> return;
>
> - wa_init_start(wal, "engine", engine->name);
> + wa_init_start(wal, engine->i915, "engine", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
> }
> @@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
> if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
> continue;
>
> - if (!wa_verify(wa, results[i], wal->name, from))
> + if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
> err = -ENXIO;
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> index 7c8b01d00043..7e51e0219a5d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> @@ -10,6 +10,8 @@
>
> #include "i915_reg_defs.h"
>
> +struct drm_i915_private;
> +
> struct i915_wa {
> union {
> i915_reg_t reg;
> @@ -24,6 +26,8 @@ struct i915_wa {
> };
>
> struct i915_wa_list {
> + struct drm_i915_private *i915;
> +
> const char *name;
> const char *engine_name;
> struct i915_wa *list;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index 21b1edc052f8..3dd761a690d7 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
>
> memset(lists, 0, sizeof(*lists));
>
> - wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
> + wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
> gt_init_workarounds(gt, &lists->gt_wa_list);
> wa_init_finish(&lists->gt_wa_list);
>
> for_each_engine(engine, gt, id) {
> struct i915_wa_list *wal = &lists->engine[id].wa_list;
>
> - wa_init_start(wal, "REF", engine->name);
> + wa_init_start(wal, gt->i915, "REF", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index ae987e92251d..6c7ac73b69a5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
> unsigned int flags;
> int ret;
>
> - DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
> - val, val & DROP_ALL);
> + drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
> + val, val & DROP_ALL);
>
> ret = gt_drop_caches(to_gt(i915), val);
> if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 299f94a9fb87..8132743ca87e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
> struct i915_drm_client *client;
> int ret = -ENOMEM;
>
> - DRM_DEBUG("\n");
> + drm_dbg(&i915->drm, "\n");
>
> file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
> if (!file_priv)
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 3047e80e1163..61ef2d9cfa62 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> value = i915_perf_oa_timestamp_frequency(i915);
> break;
> default:
> - DRM_DEBUG("Unknown parameter %d\n", param->param);
> + drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b0180ea38de0..6c20817f8967 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
> kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
> KOBJ_CHANGE, parity_event);
>
> - DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> - slice, row, bank, subbank);
> + drm_dbg(&dev_priv->drm,
> + "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> + slice, row, bank, subbank);
>
> kfree(parity_event[4]);
> kfree(parity_event[3]);
> @@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
> } else {
> - DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
> + drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
> + master_tile_ctl);
> dg1_master_intr_enable(regs);
> return IRQ_NONE;
> }
> @@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
> static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u16 eir, u16 eir_stuck)
> {
> - DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
> @@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
> static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u32 eir, u32 eir_stuck)
> {
> - DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 0dd597a7a11f..9e6f060592d8 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
>
> if (OA_TAKEN(hw_tail, tail) > report_size &&
> __ratelimit(&stream->perf->tail_pointer_race))
> - DRM_NOTE("unlanded report(s) head=0x%x "
> - "tail=0x%x hw_tail=0x%x\n",
> - head, tail, hw_tail);
> + drm_notice(&stream->uncore->i915->drm,
> + "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> + head, tail, hw_tail);
>
> stream->oa_buffer.tail = gtt_offset + tail;
> stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
> @@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
> */
> if (report32[0] == 0) {
> if (__ratelimit(&stream->perf->spurious_report_rs))
> - DRM_NOTE("Skipping spurious, invalid OA report\n");
> + drm_notice(&uncore->i915->drm,
> + "Skipping spurious, invalid OA report\n");
> continue;
> }
>
> @@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
> free_noa_wait(stream);
>
> if (perf->spurious_report_rs.missed) {
> - DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
> - perf->spurious_report_rs.missed);
> + drm_notice(>->i915->drm,
> + "%d spurious OA report notices suppressed due to ratelimiting\n",
> + perf->spurious_report_rs.missed);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6ec9c9fb7b0d..00871ef99792 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
> return total_size;
>
> if (query_item->length < total_size) {
> - DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
> - query_item->length, total_size);
> + drm_dbg(&i915->drm,
> + "Invalid query config data item size=%u expected=%u\n",
> + query_item->length, total_size);
> return -EINVAL;
> }
>
> @@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
> } while (n_configs > alloc);
>
> if (query_item->length < sizeof_perf_config_list(n_configs)) {
> - DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
> - query_item->length,
> - sizeof_perf_config_list(n_configs));
> + drm_dbg(&i915->drm,
> + "Invalid query config list item size=%u expected=%zu\n",
> + query_item->length,
> + sizeof_perf_config_list(n_configs));
> kfree(oa_config_ids);
> return -EINVAL;
> }
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 1e2750210831..595e8b574990 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
> static void i915_setup_error_capture(struct device *kdev)
> {
> if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
> - DRM_ERROR("error_state sysfs setup failed\n");
> + drm_err(&kdev_minor_to_i915(kdev)->drm,
> + "error_state sysfs setup failed\n");
> }
>
> static void i915_teardown_error_capture(struct device *kdev)
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index c39488eb9eeb..3b969d679c1e 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
> char buf[512];
>
> if (!vma->node.stack) {
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
> - vma->node.start, vma->node.size, reason);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm
> + "vma.node [%08llx + %08llx] %s: unknown owner\n",
> + vma->node.start, vma->node.size, reason);
> return;
> }
>
> stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
> - vma->node.start, vma->node.size, reason, buf);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "vma.node [%08llx + %08llx] %s: inserted at %s\n",
> + vma->node.start, vma->node.size, reason, buf);
> }
>
> #else
> @@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
> * attempt to find space.
> */
> if (size > end) {
> - DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> - size, flags & PIN_MAPPABLE ? "mappable" : "total",
> - end);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> + size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
> return -ENOSPC;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 2a3e2869fe71..6c25c9e7090a 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -178,8 +178,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack to clear.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
> @@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
> fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
> } while (!ack_detected && pass++ < 10);
>
> - DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> - intel_uncore_forcewake_domain_to_str(d->id),
> - type == ACK_SET ? "set" : "clear",
> - fw_ack(d),
> - pass);
> + drm_dbg(&d->uncore->i915->drm,
> + "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> + intel_uncore_forcewake_domain_to_str(d->id),
> + type == ACK_SET ? "set" : "clear",
> + fw_ack(d),
> + pass);
>
> return ack_detected ? 0 : -ETIMEDOUT;
> }
> @@ -255,8 +257,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack request.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
2022-11-08 12:32 ` Jani Nikula
2022-11-08 15:15 ` [Intel-gfx] " Andrzej Hajda
@ 2022-11-08 19:53 ` John Harrison
2 siblings, 0 replies; 11+ messages in thread
From: John Harrison @ 2022-11-08 19:53 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx; +Cc: Jani Nikula, dri-devel, Tvrtko Ursulin
On 11/8/2022 04:26, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Convert some usages of legacy DRM logging macros into versions which tell
> us on which device have the events occurred.
>
> v2:
> * Don't have struct drm_device as local. (Jani, Ville)
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 +++++++----
> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 43 +++++++++++--------
> .../gpu/drm/i915/gt/intel_workarounds_types.h | 4 ++
> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
> drivers/gpu/drm/i915/i915_perf.c | 14 +++---
> drivers/gpu/drm/i915/i915_query.c | 12 +++---
> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
> drivers/gpu/drm/i915/i915_vma.c | 16 ++++---
> drivers/gpu/drm/i915/intel_uncore.c | 21 +++++----
> 19 files changed, 119 insertions(+), 81 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 01402f3c58f6..7f2831efc798 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
> }
>
> if (intel_engine_uses_guc(master)) {
> - DRM_DEBUG("bonding extension not supported with GuC submission");
> + drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
> return -ENODEV;
> }
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index 1160723c9d2d..f65fd03f7cf2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2148,7 +2148,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
> return err;
> }
>
> -static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> +static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
> + struct drm_i915_gem_execbuffer2 *exec)
> {
> if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
> return -EINVAL;
> @@ -2161,7 +2162,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
> }
>
> if (exec->DR4 == 0xffffffff) {
> - DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
> + drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
> exec->DR4 = 0;
> }
> if (exec->DR1 || exec->DR4)
> @@ -2799,7 +2800,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> @@ -2807,7 +2809,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
>
> if (!fence && user_fence.flags &&
> !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -2816,7 +2819,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> err = dma_fence_chain_find_seqno(&fence, point);
>
> if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
> - DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle missing requested point %llu\n",
> + point);
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return err;
> @@ -2842,7 +2847,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
> * 0) would break the timeline.
> */
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> - DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
> + drm_dbg(&eb->i915->drm,
> + "Trying to wait & signal the same timeline point.\n");
> dma_fence_put(fence);
> drm_syncobj_put(syncobj);
> return -EINVAL;
> @@ -2913,14 +2919,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
>
> syncobj = drm_syncobj_find(eb->file, user_fence.handle);
> if (!syncobj) {
> - DRM_DEBUG("Invalid syncobj handle provided\n");
> + drm_dbg(&eb->i915->drm,
> + "Invalid syncobj handle provided\n");
> return -ENOENT;
> }
>
> if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
> fence = drm_syncobj_fence_get(syncobj);
> if (!fence) {
> - DRM_DEBUG("Syncobj handle has no fence\n");
> + drm_dbg(&eb->i915->drm,
> + "Syncobj handle has no fence\n");
> drm_syncobj_put(syncobj);
> return -EINVAL;
> }
> @@ -3515,7 +3523,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
> return -EINVAL;
> }
>
> - err = i915_gem_check_execbuffer(args);
> + err = i915_gem_check_execbuffer(i915, args);
> if (err)
> return err;
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> index 0187bc72310d..d92512780467 100644
> --- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> +++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
> @@ -3921,6 +3921,7 @@ static struct intel_context *
> execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> unsigned long flags)
> {
> + struct drm_i915_private *i915 = siblings[0]->i915;
> struct virtual_engine *ve;
> unsigned int n;
> int err;
> @@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> if (!ve)
> return ERR_PTR(-ENOMEM);
>
> - ve->base.i915 = siblings[0]->i915;
> + ve->base.i915 = i915;
> ve->base.gt = siblings[0]->gt;
> ve->base.uncore = siblings[0]->uncore;
> ve->base.id = -1;
> @@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
>
> GEM_BUG_ON(!is_power_of_2(sibling->mask));
> if (sibling->mask & ve->base.mask) {
> - DRM_DEBUG("duplicate %s entry in load balancer\n",
> - sibling->name);
> + drm_dbg(&i915->drm,
> + "duplicate %s entry in load balancer\n",
> + sibling->name);
It was already decided to convert these to use a GT specific printer. So
this patch is only half implemented.
> err = -EINVAL;
> goto err_put;
> }
> @@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
> */
> if (ve->base.class != OTHER_CLASS) {
> if (ve->base.class != sibling->class) {
> - DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
> - sibling->class, ve->base.class);
> + drm_dbg(&i915->drm,
> + "invalid mixing of engine class, sibling %d, already %d\n",
> + sibling->class, ve->base.class);
> err = -EINVAL;
> goto err_put;
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> index ea775e601686..995082d45cb2 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> @@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
> if (obj->bit_17 == NULL) {
> obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
> if (obj->bit_17 == NULL) {
> - DRM_ERROR("Failed to allocate memory for bit 17 "
> - "record\n");
> + drm_err(&to_i915(obj->base.dev)->drm,
> + "Failed to allocate memory for bit 17 record\n");
> return;
> }
> }
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 8e914c4066ed..0ba7d6f36b28 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
>
> ret = i915_ppgtt_init_hw(gt);
> if (ret) {
> - DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
> + drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
> goto out;
> }
>
> @@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
> * some errors might have become stuck,
> * mask them.
> */
> - DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
> + drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
> rmw_set(uncore, EMR, eir);
> intel_uncore_write(uncore, GEN2_IIR,
> I915_MASTER_ERROR_INTERRUPT);
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> index b197f0e9794f..4c8ddd074b78 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
> @@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
> !time_after32(local_clock() >> 10, timeout_ts));
>
> if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
> - DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> - bank, bit, ident);
> + drm_err(>->i915->drm,
> + "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
> + bank, bit, ident);
> return 0;
> }
>
> @@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
> if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
> GT_BSD_CS_ERROR_INTERRUPT |
> GT_CS_MASTER_ERROR_INTERRUPT))
> - DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
> + drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
> + gt_iir);
>
> if (gt_iir & GT_PARITY_ERROR(gt->i915))
> gen7_parity_error_irq_handler(gt, gt_iir);
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
> index 6c34a83c24b3..effe60ac22cd 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
>
> rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
> if (rgvswctl & MEMCTL_CMD_STS) {
> - DRM_DEBUG("gpu busy, RCS change rejected\n");
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "gpu busy, RCS change rejected\n");
> return -EBUSY; /* still busy with another command */
> }
>
> @@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
> intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
>
> if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
> - DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
> + drm_dbg(&rps_to_i915(rps)->drm,
> + "Command parser error, pm_iir 0x%08x\n", pm_iir);
> }
>
> void gen5_rps_irq_handler(struct intel_rps *rps)
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 3cdf5c24dbc5..2af97d954fc4 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -55,8 +55,11 @@
> * - Public functions to init or apply the given workaround type.
> */
>
> -static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
> +static void wa_init_start(struct i915_wa_list *wal,
> + struct drm_i915_private *i915,
> + const char *name, const char *engine_name)
> {
> + wal->i915 = i915;
> wal->name = name;
> wal->engine_name = engine_name;
> }
> @@ -80,13 +83,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
> if (!wal->count)
> return;
>
> - DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
> - wal->wa_count, wal->name, wal->engine_name);
> + drm_dbg(&wal->i915->drm, "Initialized %u %s workarounds on %s\n",
> + wal->wa_count, wal->name, wal->engine_name);
> }
>
> static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> {
> unsigned int addr = i915_mmio_reg_offset(wa->reg);
> + struct drm_i915_private *i915 = wal->i915;
> unsigned int start = 0, end = wal->count;
> const unsigned int grow = WA_LIST_CHUNK;
> struct i915_wa *wa_;
> @@ -99,7 +103,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> GFP_KERNEL);
> if (!list) {
> - DRM_ERROR("No space for workaround init!\n");
> + drm_err(&i915->drm, "No space for workaround init!\n");
> return;
> }
>
> @@ -122,9 +126,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> wa_ = &wal->list[mid];
>
> if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
> - DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> - i915_mmio_reg_offset(wa_->reg),
> - wa_->clr, wa_->set);
> + drm_err(&i915->drm,
> + "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
> + i915_mmio_reg_offset(wa_->reg),
> + wa_->clr, wa_->set);
>
> wa_->set &= ~wa->clr;
> }
> @@ -826,7 +831,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
> {
> struct drm_i915_private *i915 = engine->i915;
>
> - wa_init_start(wal, name, engine->name);
> + wa_init_start(wal, i915, name, engine->name);
>
> /* Applies to all engines */
> /*
> @@ -1676,7 +1681,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
> {
> struct i915_wa_list *wal = >->wa_list;
>
> - wa_init_start(wal, "GT", "global");
> + wa_init_start(wal, gt->i915, "GT", "global");
> gt_init_workarounds(gt, wal);
> wa_init_finish(wal);
> }
> @@ -1698,12 +1703,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
> }
>
> static bool
> -wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
> +wa_verify(struct drm_i915_private *i915, const struct i915_wa *wa, u32 cur,
> + const char *name, const char *from)
> {
> if ((cur ^ wa->set) & wa->read) {
> - DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> - name, from, i915_mmio_reg_offset(wa->reg),
> - cur, cur & wa->read, wa->set & wa->read);
> + drm_err(&i915->drm,
> + "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
> + name, from, i915_mmio_reg_offset(wa->reg),
> + cur, cur & wa->read, wa->set & wa->read);
>
> return false;
> }
> @@ -1749,7 +1756,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg);
>
> - wa_verify(wa, val, wal->name, "application");
> + wa_verify(wal->i915, wa, val, wal->name, "application");
> }
> }
>
> @@ -1779,7 +1786,7 @@ static bool wa_list_verify(struct intel_gt *gt,
> intel_uncore_forcewake_get__locked(uncore, fw);
>
> for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
> - ok &= wa_verify(wa, wa->is_mcr ?
> + ok &= wa_verify(wal->i915, wa, wa->is_mcr ?
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg),
> wal->name, from);
> @@ -2127,7 +2134,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
> struct drm_i915_private *i915 = engine->i915;
> struct i915_wa_list *w = &engine->whitelist;
>
> - wa_init_start(w, "whitelist", engine->name);
> + wa_init_start(w, i915, "whitelist", engine->name);
>
> if (IS_PONTEVECCHIO(i915))
> pvc_whitelist_build(engine);
> @@ -3012,7 +3019,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
> if (GRAPHICS_VER(engine->i915) < 4)
> return;
>
> - wa_init_start(wal, "engine", engine->name);
> + wa_init_start(wal, engine->i915, "engine", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
> }
> @@ -3193,7 +3200,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
> if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
> continue;
>
> - if (!wa_verify(wa, results[i], wal->name, from))
> + if (!wa_verify(wal->i915, wa, results[i], wal->name, from))
> err = -ENXIO;
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> index 7c8b01d00043..7e51e0219a5d 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> @@ -10,6 +10,8 @@
>
> #include "i915_reg_defs.h"
>
> +struct drm_i915_private;
> +
> struct i915_wa {
> union {
> i915_reg_t reg;
> @@ -24,6 +26,8 @@ struct i915_wa {
> };
>
> struct i915_wa_list {
> + struct drm_i915_private *i915;
> +
Adding an i915 is wrong given that these are all supposed to be being
converted to GT specific prints. wa_init_start is always called with
access to a GT. So that is what should be saved for future message
output usage.
John.
> const char *name;
> const char *engine_name;
> struct i915_wa *list;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index 21b1edc052f8..3dd761a690d7 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
>
> memset(lists, 0, sizeof(*lists));
>
> - wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
> + wa_init_start(&lists->gt_wa_list, gt->i915, "GT_REF", "global");
> gt_init_workarounds(gt, &lists->gt_wa_list);
> wa_init_finish(&lists->gt_wa_list);
>
> for_each_engine(engine, gt, id) {
> struct i915_wa_list *wal = &lists->engine[id].wa_list;
>
> - wa_init_start(wal, "REF", engine->name);
> + wa_init_start(wal, gt->i915, "REF", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index ae987e92251d..6c7ac73b69a5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
> unsigned int flags;
> int ret;
>
> - DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
> - val, val & DROP_ALL);
> + drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
> + val, val & DROP_ALL);
>
> ret = gt_drop_caches(to_gt(i915), val);
> if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 299f94a9fb87..8132743ca87e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
> struct i915_drm_client *client;
> int ret = -ENOMEM;
>
> - DRM_DEBUG("\n");
> + drm_dbg(&i915->drm, "\n");
>
> file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
> if (!file_priv)
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 3047e80e1163..61ef2d9cfa62 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> value = i915_perf_oa_timestamp_frequency(i915);
> break;
> default:
> - DRM_DEBUG("Unknown parameter %d\n", param->param);
> + drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b0180ea38de0..6c20817f8967 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
> kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
> KOBJ_CHANGE, parity_event);
>
> - DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> - slice, row, bank, subbank);
> + drm_dbg(&dev_priv->drm,
> + "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> + slice, row, bank, subbank);
>
> kfree(parity_event[4]);
> kfree(parity_event[3]);
> @@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
> } else {
> - DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
> + drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
> + master_tile_ctl);
> dg1_master_intr_enable(regs);
> return IRQ_NONE;
> }
> @@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
> static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u16 eir, u16 eir_stuck)
> {
> - DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
> @@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
> static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u32 eir, u32 eir_stuck)
> {
> - DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 0dd597a7a11f..9e6f060592d8 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
>
> if (OA_TAKEN(hw_tail, tail) > report_size &&
> __ratelimit(&stream->perf->tail_pointer_race))
> - DRM_NOTE("unlanded report(s) head=0x%x "
> - "tail=0x%x hw_tail=0x%x\n",
> - head, tail, hw_tail);
> + drm_notice(&stream->uncore->i915->drm,
> + "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> + head, tail, hw_tail);
>
> stream->oa_buffer.tail = gtt_offset + tail;
> stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
> @@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
> */
> if (report32[0] == 0) {
> if (__ratelimit(&stream->perf->spurious_report_rs))
> - DRM_NOTE("Skipping spurious, invalid OA report\n");
> + drm_notice(&uncore->i915->drm,
> + "Skipping spurious, invalid OA report\n");
> continue;
> }
>
> @@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
> free_noa_wait(stream);
>
> if (perf->spurious_report_rs.missed) {
> - DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
> - perf->spurious_report_rs.missed);
> + drm_notice(>->i915->drm,
> + "%d spurious OA report notices suppressed due to ratelimiting\n",
> + perf->spurious_report_rs.missed);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6ec9c9fb7b0d..00871ef99792 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
> return total_size;
>
> if (query_item->length < total_size) {
> - DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
> - query_item->length, total_size);
> + drm_dbg(&i915->drm,
> + "Invalid query config data item size=%u expected=%u\n",
> + query_item->length, total_size);
> return -EINVAL;
> }
>
> @@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
> } while (n_configs > alloc);
>
> if (query_item->length < sizeof_perf_config_list(n_configs)) {
> - DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
> - query_item->length,
> - sizeof_perf_config_list(n_configs));
> + drm_dbg(&i915->drm,
> + "Invalid query config list item size=%u expected=%zu\n",
> + query_item->length,
> + sizeof_perf_config_list(n_configs));
> kfree(oa_config_ids);
> return -EINVAL;
> }
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 1e2750210831..595e8b574990 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
> static void i915_setup_error_capture(struct device *kdev)
> {
> if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
> - DRM_ERROR("error_state sysfs setup failed\n");
> + drm_err(&kdev_minor_to_i915(kdev)->drm,
> + "error_state sysfs setup failed\n");
> }
>
> static void i915_teardown_error_capture(struct device *kdev)
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index c39488eb9eeb..3b969d679c1e 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
> char buf[512];
>
> if (!vma->node.stack) {
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
> - vma->node.start, vma->node.size, reason);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm
> + "vma.node [%08llx + %08llx] %s: unknown owner\n",
> + vma->node.start, vma->node.size, reason);
> return;
> }
>
> stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
> - vma->node.start, vma->node.size, reason, buf);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "vma.node [%08llx + %08llx] %s: inserted at %s\n",
> + vma->node.start, vma->node.size, reason, buf);
> }
>
> #else
> @@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
> * attempt to find space.
> */
> if (size > end) {
> - DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> - size, flags & PIN_MAPPABLE ? "mappable" : "total",
> - end);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> + size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
> return -ENOSPC;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 2a3e2869fe71..6c25c9e7090a 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -178,8 +178,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack to clear.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
> @@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
> fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
> } while (!ack_detected && pass++ < 10);
>
> - DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> - intel_uncore_forcewake_domain_to_str(d->id),
> - type == ACK_SET ? "set" : "clear",
> - fw_ack(d),
> - pass);
> + drm_dbg(&d->uncore->i915->drm,
> + "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> + intel_uncore_forcewake_domain_to_str(d->id),
> + type == ACK_SET ? "set" : "clear",
> + fw_ack(d),
> + pass);
>
> return ack_detected ? 0 : -ETIMEDOUT;
> }
> @@ -255,8 +257,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack request.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-08 11:49 [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros Tvrtko Ursulin
` (2 preceding siblings ...)
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
@ 2022-11-09 10:46 ` Tvrtko Ursulin
2022-11-10 11:07 ` [Intel-gfx] " Andrzej Hajda
3 siblings, 1 reply; 11+ messages in thread
From: Tvrtko Ursulin @ 2022-11-09 10:46 UTC (permalink / raw)
To: Intel-gfx
Cc: Tvrtko Ursulin, Jani Nikula, dri-devel, John Harrison, Andrzej Hajda
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Convert some usages of legacy DRM logging macros into versions which tell
us on which device have the events occurred.
v2:
* Don't have struct drm_device as local. (Jani, Ville)
v3:
* Store gt, not i915, in workaround list. (John)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> # v2
Acked-by: Jani Nikula <jani.nikula@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 ++++++++----
.../drm/i915/gt/intel_execlists_submission.c | 13 +++---
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
drivers/gpu/drm/i915/gt/intel_workarounds.c | 42 +++++++++++--------
.../gpu/drm/i915/gt/intel_workarounds_types.h | 3 ++
.../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
drivers/gpu/drm/i915/i915_gem.c | 2 +-
drivers/gpu/drm/i915/i915_getparam.c | 2 +-
drivers/gpu/drm/i915/i915_irq.c | 12 +++---
drivers/gpu/drm/i915/i915_perf.c | 14 ++++---
drivers/gpu/drm/i915/i915_query.c | 12 +++---
drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
drivers/gpu/drm/i915/i915_vma.c | 16 +++----
drivers/gpu/drm/i915/intel_uncore.c | 21 ++++++----
19 files changed, 117 insertions(+), 81 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 01402f3c58f6..7f2831efc798 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
}
if (intel_engine_uses_guc(master)) {
- DRM_DEBUG("bonding extension not supported with GuC submission");
+ drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
return -ENODEV;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 280ed90d5001..692b9d03d84b 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -2149,7 +2149,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
return err;
}
-static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
+static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
+ struct drm_i915_gem_execbuffer2 *exec)
{
if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
return -EINVAL;
@@ -2162,7 +2163,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
}
if (exec->DR4 == 0xffffffff) {
- DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
+ drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
exec->DR4 = 0;
}
if (exec->DR1 || exec->DR4)
@@ -2800,7 +2801,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(&eb->i915->drm,
+ "Invalid syncobj handle provided\n");
return -ENOENT;
}
@@ -2808,7 +2810,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
if (!fence && user_fence.flags &&
!(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -2817,7 +2820,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
err = dma_fence_chain_find_seqno(&fence, point);
if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
- DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle missing requested point %llu\n",
+ point);
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return err;
@@ -2843,7 +2848,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
* 0) would break the timeline.
*/
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
- DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
+ drm_dbg(&eb->i915->drm,
+ "Trying to wait & signal the same timeline point.\n");
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return -EINVAL;
@@ -2914,14 +2920,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
if (!syncobj) {
- DRM_DEBUG("Invalid syncobj handle provided\n");
+ drm_dbg(&eb->i915->drm,
+ "Invalid syncobj handle provided\n");
return -ENOENT;
}
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
fence = drm_syncobj_fence_get(syncobj);
if (!fence) {
- DRM_DEBUG("Syncobj handle has no fence\n");
+ drm_dbg(&eb->i915->drm,
+ "Syncobj handle has no fence\n");
drm_syncobj_put(syncobj);
return -EINVAL;
}
@@ -3550,7 +3558,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
return -EINVAL;
}
- err = i915_gem_check_execbuffer(args);
+ err = i915_gem_check_execbuffer(i915, args);
if (err)
return err;
diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index 0187bc72310d..d92512780467 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -3921,6 +3921,7 @@ static struct intel_context *
execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
unsigned long flags)
{
+ struct drm_i915_private *i915 = siblings[0]->i915;
struct virtual_engine *ve;
unsigned int n;
int err;
@@ -3929,7 +3930,7 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
if (!ve)
return ERR_PTR(-ENOMEM);
- ve->base.i915 = siblings[0]->i915;
+ ve->base.i915 = i915;
ve->base.gt = siblings[0]->gt;
ve->base.uncore = siblings[0]->uncore;
ve->base.id = -1;
@@ -3988,8 +3989,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
GEM_BUG_ON(!is_power_of_2(sibling->mask));
if (sibling->mask & ve->base.mask) {
- DRM_DEBUG("duplicate %s entry in load balancer\n",
- sibling->name);
+ drm_dbg(&i915->drm,
+ "duplicate %s entry in load balancer\n",
+ sibling->name);
err = -EINVAL;
goto err_put;
}
@@ -4023,8 +4025,9 @@ execlists_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
*/
if (ve->base.class != OTHER_CLASS) {
if (ve->base.class != sibling->class) {
- DRM_DEBUG("invalid mixing of engine class, sibling %d, already %d\n",
- sibling->class, ve->base.class);
+ drm_dbg(&i915->drm,
+ "invalid mixing of engine class, sibling %d, already %d\n",
+ sibling->class, ve->base.class);
err = -EINVAL;
goto err_put;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index ea775e601686..995082d45cb2 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -816,8 +816,8 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
if (obj->bit_17 == NULL) {
obj->bit_17 = bitmap_zalloc(page_count, GFP_KERNEL);
if (obj->bit_17 == NULL) {
- DRM_ERROR("Failed to allocate memory for bit 17 "
- "record\n");
+ drm_err(&to_i915(obj->base.dev)->drm,
+ "Failed to allocate memory for bit 17 record\n");
return;
}
}
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index 8e914c4066ed..0ba7d6f36b28 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -190,7 +190,7 @@ int intel_gt_init_hw(struct intel_gt *gt)
ret = i915_ppgtt_init_hw(gt);
if (ret) {
- DRM_ERROR("Enabling PPGTT failed (%d)\n", ret);
+ drm_err(&i915->drm, "Enabling PPGTT failed (%d)\n", ret);
goto out;
}
@@ -262,7 +262,7 @@ intel_gt_clear_error_registers(struct intel_gt *gt,
* some errors might have become stuck,
* mask them.
*/
- DRM_DEBUG_DRIVER("EIR stuck: 0x%08x, masking\n", eir);
+ drm_dbg(>->i915->drm, "EIR stuck: 0x%08x, masking\n", eir);
rmw_set(uncore, EMR, eir);
intel_uncore_write(uncore, GEN2_IIR,
I915_MASTER_ERROR_INTERRUPT);
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
index b197f0e9794f..4c8ddd074b78 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c
@@ -44,8 +44,9 @@ gen11_gt_engine_identity(struct intel_gt *gt,
!time_after32(local_clock() >> 10, timeout_ts));
if (unlikely(!(ident & GEN11_INTR_DATA_VALID))) {
- DRM_ERROR("INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
- bank, bit, ident);
+ drm_err(>->i915->drm,
+ "INTR_IDENTITY_REG%u:%u 0x%08x not valid!\n",
+ bank, bit, ident);
return 0;
}
@@ -364,7 +365,8 @@ void gen6_gt_irq_handler(struct intel_gt *gt, u32 gt_iir)
if (gt_iir & (GT_BLT_CS_ERROR_INTERRUPT |
GT_BSD_CS_ERROR_INTERRUPT |
GT_CS_MASTER_ERROR_INTERRUPT))
- DRM_DEBUG("Command parser error, gt_iir 0x%08x\n", gt_iir);
+ drm_dbg(>->i915->drm, "Command parser error, gt_iir 0x%08x\n",
+ gt_iir);
if (gt_iir & GT_PARITY_ERROR(gt->i915))
gen7_parity_error_irq_handler(gt, gt_iir);
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 6c34a83c24b3..effe60ac22cd 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -430,7 +430,8 @@ static int __gen5_rps_set(struct intel_rps *rps, u8 val)
rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
if (rgvswctl & MEMCTL_CMD_STS) {
- DRM_DEBUG("gpu busy, RCS change rejected\n");
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "gpu busy, RCS change rejected\n");
return -EBUSY; /* still busy with another command */
}
@@ -1953,7 +1954,8 @@ void gen6_rps_irq_handler(struct intel_rps *rps, u32 pm_iir)
intel_engine_cs_irq(gt->engine[VECS0], pm_iir >> 10);
if (pm_iir & PM_VEBOX_CS_ERROR_INTERRUPT)
- DRM_DEBUG("Command parser error, pm_iir 0x%08x\n", pm_iir);
+ drm_dbg(&rps_to_i915(rps)->drm,
+ "Command parser error, pm_iir 0x%08x\n", pm_iir);
}
void gen5_rps_irq_handler(struct intel_rps *rps)
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 3cdf5c24dbc5..07bf115029a0 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -55,8 +55,10 @@
* - Public functions to init or apply the given workaround type.
*/
-static void wa_init_start(struct i915_wa_list *wal, const char *name, const char *engine_name)
+static void wa_init_start(struct i915_wa_list *wal, struct intel_gt *gt,
+ const char *name, const char *engine_name)
{
+ wal->gt = gt;
wal->name = name;
wal->engine_name = engine_name;
}
@@ -80,13 +82,14 @@ static void wa_init_finish(struct i915_wa_list *wal)
if (!wal->count)
return;
- DRM_DEBUG_DRIVER("Initialized %u %s workarounds on %s\n",
- wal->wa_count, wal->name, wal->engine_name);
+ drm_dbg(&wal->gt->i915->drm, "Initialized %u %s workarounds on %s\n",
+ wal->wa_count, wal->name, wal->engine_name);
}
static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
{
unsigned int addr = i915_mmio_reg_offset(wa->reg);
+ struct drm_i915_private *i915 = wal->gt->i915;
unsigned int start = 0, end = wal->count;
const unsigned int grow = WA_LIST_CHUNK;
struct i915_wa *wa_;
@@ -99,7 +102,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
GFP_KERNEL);
if (!list) {
- DRM_ERROR("No space for workaround init!\n");
+ drm_err(&i915->drm, "No space for workaround init!\n");
return;
}
@@ -122,9 +125,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
wa_ = &wal->list[mid];
if ((wa->clr | wa_->clr) && !(wa->clr & ~wa_->clr)) {
- DRM_ERROR("Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
- i915_mmio_reg_offset(wa_->reg),
- wa_->clr, wa_->set);
+ drm_err(&i915->drm,
+ "Discarding overwritten w/a for reg %04x (clear: %08x, set: %08x)\n",
+ i915_mmio_reg_offset(wa_->reg),
+ wa_->clr, wa_->set);
wa_->set &= ~wa->clr;
}
@@ -826,7 +830,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
{
struct drm_i915_private *i915 = engine->i915;
- wa_init_start(wal, name, engine->name);
+ wa_init_start(wal, engine->gt, name, engine->name);
/* Applies to all engines */
/*
@@ -1676,7 +1680,7 @@ void intel_gt_init_workarounds(struct intel_gt *gt)
{
struct i915_wa_list *wal = >->wa_list;
- wa_init_start(wal, "GT", "global");
+ wa_init_start(wal, gt, "GT", "global");
gt_init_workarounds(gt, wal);
wa_init_finish(wal);
}
@@ -1698,12 +1702,14 @@ wal_get_fw_for_rmw(struct intel_uncore *uncore, const struct i915_wa_list *wal)
}
static bool
-wa_verify(const struct i915_wa *wa, u32 cur, const char *name, const char *from)
+wa_verify(struct intel_gt *gt, const struct i915_wa *wa, u32 cur,
+ const char *name, const char *from)
{
if ((cur ^ wa->set) & wa->read) {
- DRM_ERROR("%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
- name, from, i915_mmio_reg_offset(wa->reg),
- cur, cur & wa->read, wa->set & wa->read);
+ drm_err(>->i915->drm,
+ "%s workaround lost on %s! (reg[%x]=0x%x, relevant bits were 0x%x vs expected 0x%x)\n",
+ name, from, i915_mmio_reg_offset(wa->reg),
+ cur, cur & wa->read, wa->set & wa->read);
return false;
}
@@ -1749,7 +1755,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg);
- wa_verify(wa, val, wal->name, "application");
+ wa_verify(wal->gt, wa, val, wal->name, "application");
}
}
@@ -1779,7 +1785,7 @@ static bool wa_list_verify(struct intel_gt *gt,
intel_uncore_forcewake_get__locked(uncore, fw);
for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
- ok &= wa_verify(wa, wa->is_mcr ?
+ ok &= wa_verify(wal->gt, wa, wa->is_mcr ?
intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
intel_uncore_read_fw(uncore, wa->reg),
wal->name, from);
@@ -2127,7 +2133,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
struct drm_i915_private *i915 = engine->i915;
struct i915_wa_list *w = &engine->whitelist;
- wa_init_start(w, "whitelist", engine->name);
+ wa_init_start(w, engine->gt, "whitelist", engine->name);
if (IS_PONTEVECCHIO(i915))
pvc_whitelist_build(engine);
@@ -3012,7 +3018,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
if (GRAPHICS_VER(engine->i915) < 4)
return;
- wa_init_start(wal, "engine", engine->name);
+ wa_init_start(wal, engine->gt, "engine", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
}
@@ -3193,7 +3199,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
continue;
- if (!wa_verify(wa, results[i], wal->name, from))
+ if (!wa_verify(wal->gt, wa, results[i], wal->name, from))
err = -ENXIO;
}
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
index 7c8b01d00043..e14188120e66 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
@@ -10,6 +10,8 @@
#include "i915_reg_defs.h"
+struct intel_gt;
+
struct i915_wa {
union {
i915_reg_t reg;
@@ -24,6 +26,7 @@ struct i915_wa {
};
struct i915_wa_list {
+ struct intel_gt *gt;
const char *name;
const char *engine_name;
struct i915_wa *list;
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index 21b1edc052f8..711014bb53d9 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
memset(lists, 0, sizeof(*lists));
- wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
+ wa_init_start(&lists->gt_wa_list, gt, "GT_REF", "global");
gt_init_workarounds(gt, &lists->gt_wa_list);
wa_init_finish(&lists->gt_wa_list);
for_each_engine(engine, gt, id) {
struct i915_wa_list *wal = &lists->engine[id].wa_list;
- wa_init_start(wal, "REF", engine->name);
+ wa_init_start(wal, gt, "REF", engine->name);
engine_init_workarounds(engine, wal);
wa_init_finish(wal);
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ae987e92251d..6c7ac73b69a5 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
unsigned int flags;
int ret;
- DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
- val, val & DROP_ALL);
+ drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
+ val, val & DROP_ALL);
ret = gt_drop_caches(to_gt(i915), val);
if (ret)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 299f94a9fb87..8132743ca87e 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
struct i915_drm_client *client;
int ret = -ENOMEM;
- DRM_DEBUG("\n");
+ drm_dbg(&i915->drm, "\n");
file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
if (!file_priv)
diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
index 3047e80e1163..61ef2d9cfa62 100644
--- a/drivers/gpu/drm/i915/i915_getparam.c
+++ b/drivers/gpu/drm/i915/i915_getparam.c
@@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
value = i915_perf_oa_timestamp_frequency(i915);
break;
default:
- DRM_DEBUG("Unknown parameter %d\n", param->param);
+ drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index b0180ea38de0..6c20817f8967 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
KOBJ_CHANGE, parity_event);
- DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
- slice, row, bank, subbank);
+ drm_dbg(&dev_priv->drm,
+ "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
+ slice, row, bank, subbank);
kfree(parity_event[4]);
kfree(parity_event[3]);
@@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
} else {
- DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
+ drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
+ master_tile_ctl);
dg1_master_intr_enable(regs);
return IRQ_NONE;
}
@@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
u16 eir, u16 eir_stuck)
{
- DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
@@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
u32 eir, u32 eir_stuck)
{
- DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
+ drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
if (eir_stuck)
drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 0dd597a7a11f..9e6f060592d8 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
if (OA_TAKEN(hw_tail, tail) > report_size &&
__ratelimit(&stream->perf->tail_pointer_race))
- DRM_NOTE("unlanded report(s) head=0x%x "
- "tail=0x%x hw_tail=0x%x\n",
- head, tail, hw_tail);
+ drm_notice(&stream->uncore->i915->drm,
+ "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
+ head, tail, hw_tail);
stream->oa_buffer.tail = gtt_offset + tail;
stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
@@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
*/
if (report32[0] == 0) {
if (__ratelimit(&stream->perf->spurious_report_rs))
- DRM_NOTE("Skipping spurious, invalid OA report\n");
+ drm_notice(&uncore->i915->drm,
+ "Skipping spurious, invalid OA report\n");
continue;
}
@@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
free_noa_wait(stream);
if (perf->spurious_report_rs.missed) {
- DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
- perf->spurious_report_rs.missed);
+ drm_notice(>->i915->drm,
+ "%d spurious OA report notices suppressed due to ratelimiting\n",
+ perf->spurious_report_rs.missed);
}
}
diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
index 6ec9c9fb7b0d..00871ef99792 100644
--- a/drivers/gpu/drm/i915/i915_query.c
+++ b/drivers/gpu/drm/i915/i915_query.c
@@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
return total_size;
if (query_item->length < total_size) {
- DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
- query_item->length, total_size);
+ drm_dbg(&i915->drm,
+ "Invalid query config data item size=%u expected=%u\n",
+ query_item->length, total_size);
return -EINVAL;
}
@@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
} while (n_configs > alloc);
if (query_item->length < sizeof_perf_config_list(n_configs)) {
- DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
- query_item->length,
- sizeof_perf_config_list(n_configs));
+ drm_dbg(&i915->drm,
+ "Invalid query config list item size=%u expected=%zu\n",
+ query_item->length,
+ sizeof_perf_config_list(n_configs));
kfree(oa_config_ids);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
index 1e2750210831..595e8b574990 100644
--- a/drivers/gpu/drm/i915/i915_sysfs.c
+++ b/drivers/gpu/drm/i915/i915_sysfs.c
@@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
static void i915_setup_error_capture(struct device *kdev)
{
if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
- DRM_ERROR("error_state sysfs setup failed\n");
+ drm_err(&kdev_minor_to_i915(kdev)->drm,
+ "error_state sysfs setup failed\n");
}
static void i915_teardown_error_capture(struct device *kdev)
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index c39488eb9eeb..3b969d679c1e 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
char buf[512];
if (!vma->node.stack) {
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
- vma->node.start, vma->node.size, reason);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm
+ "vma.node [%08llx + %08llx] %s: unknown owner\n",
+ vma->node.start, vma->node.size, reason);
return;
}
stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
- DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
- vma->node.start, vma->node.size, reason, buf);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "vma.node [%08llx + %08llx] %s: inserted at %s\n",
+ vma->node.start, vma->node.size, reason, buf);
}
#else
@@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
* attempt to find space.
*/
if (size > end) {
- DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
- size, flags & PIN_MAPPABLE ? "mappable" : "total",
- end);
+ drm_dbg(&to_i915(vma->obj->base.dev)->drm,
+ "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
+ size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
return -ENOSPC;
}
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 2a3e2869fe71..6c25c9e7090a 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -178,8 +178,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack to clear.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
@@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
} while (!ack_detected && pass++ < 10);
- DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
- intel_uncore_forcewake_domain_to_str(d->id),
- type == ACK_SET ? "set" : "clear",
- fw_ack(d),
- pass);
+ drm_dbg(&d->uncore->i915->drm,
+ "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
+ intel_uncore_forcewake_domain_to_str(d->id),
+ type == ACK_SET ? "set" : "clear",
+ fw_ack(d),
+ pass);
return ack_detected ? 0 : -ETIMEDOUT;
}
@@ -255,8 +257,9 @@ static inline void
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));
+ drm_err(&d->uncore->i915->drm,
+ "%s: timed out waiting for forcewake ack request.\n",
+ intel_uncore_forcewake_domain_to_str(d->id));
add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-09 10:46 ` [PATCH v3] " Tvrtko Ursulin
@ 2022-11-10 11:07 ` Andrzej Hajda
2022-11-10 11:42 ` Tvrtko Ursulin
0 siblings, 1 reply; 11+ messages in thread
From: Andrzej Hajda @ 2022-11-10 11:07 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx; +Cc: Jani Nikula, dri-devel
On 09.11.2022 11:46, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Convert some usages of legacy DRM logging macros into versions which tell
> us on which device have the events occurred.
>
> v2:
> * Don't have struct drm_device as local. (Jani, Ville)
>
> v3:
> * Store gt, not i915, in workaround list. (John)
Neither gt neither i915 does fit into wa list IMHO.
The best solution would be provide context (i915/gt/whatever)
as a function parameter, every time it is necessary.
On the other side it should not block the patch.
More below.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> # v2
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 ++++++++----
> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 42 +++++++++++--------
> .../gpu/drm/i915/gt/intel_workarounds_types.h | 3 ++
> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
> drivers/gpu/drm/i915/i915_perf.c | 14 ++++---
> drivers/gpu/drm/i915/i915_query.c | 12 +++---
> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
> drivers/gpu/drm/i915/i915_vma.c | 16 +++----
> drivers/gpu/drm/i915/intel_uncore.c | 21 ++++++----
> 19 files changed, 117 insertions(+), 81 deletions(-)
>
(...)
> @@ -1749,7 +1755,7 @@ wa_list_apply(struct intel_gt *gt, const struct i915_wa_list *wal)
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg);
>
> - wa_verify(wa, val, wal->name, "application");
> + wa_verify(wal->gt, wa, val, wal->name, "application");
This looks confusing at 1st sight, why wa_verify(wal->gt,...) and not
wa_verify(gt,...). Can they differ? and similar questions as in case of
redundant vars.
The same apply to wal->engine_name, which is almost unused anyway?
Also AFAIK there is always sequence:
1. wa_init_start
2. *init_workarounds*
3. wa_init_finish - btw funny name.
Why not 1 and 3 embed in 2? Do we need this sequence.
Anyway all these comments are for wa handling, which should be addressed
in other patch. So my r-b still holds, either with wal->i915, either
with wal->gt.
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Regards
Andrzej
> }
> }
>
> @@ -1779,7 +1785,7 @@ static bool wa_list_verify(struct intel_gt *gt,
> intel_uncore_forcewake_get__locked(uncore, fw);
>
> for (i = 0, wa = wal->list; i < wal->count; i++, wa++)
> - ok &= wa_verify(wa, wa->is_mcr ?
> + ok &= wa_verify(wal->gt, wa, wa->is_mcr ?
> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
> intel_uncore_read_fw(uncore, wa->reg),
> wal->name, from);
> @@ -2127,7 +2133,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
> struct drm_i915_private *i915 = engine->i915;
> struct i915_wa_list *w = &engine->whitelist;
>
> - wa_init_start(w, "whitelist", engine->name);
> + wa_init_start(w, engine->gt, "whitelist", engine->name);
>
> if (IS_PONTEVECCHIO(i915))
> pvc_whitelist_build(engine);
> @@ -3012,7 +3018,7 @@ void intel_engine_init_workarounds(struct intel_engine_cs *engine)
> if (GRAPHICS_VER(engine->i915) < 4)
> return;
>
> - wa_init_start(wal, "engine", engine->name);
> + wa_init_start(wal, engine->gt, "engine", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
> }
> @@ -3193,7 +3199,7 @@ static int engine_wa_list_verify(struct intel_context *ce,
> if (mcr_range(rq->engine->i915, i915_mmio_reg_offset(wa->reg)))
> continue;
>
> - if (!wa_verify(wa, results[i], wal->name, from))
> + if (!wa_verify(wal->gt, wa, results[i], wal->name, from))
> err = -ENXIO;
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> index 7c8b01d00043..e14188120e66 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds_types.h
> @@ -10,6 +10,8 @@
>
> #include "i915_reg_defs.h"
>
> +struct intel_gt;
> +
> struct i915_wa {
> union {
> i915_reg_t reg;
> @@ -24,6 +26,7 @@ struct i915_wa {
> };
>
> struct i915_wa_list {
> + struct intel_gt *gt;
> const char *name;
> const char *engine_name;
> struct i915_wa *list;
> diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> index 21b1edc052f8..711014bb53d9 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
> @@ -66,14 +66,14 @@ reference_lists_init(struct intel_gt *gt, struct wa_lists *lists)
>
> memset(lists, 0, sizeof(*lists));
>
> - wa_init_start(&lists->gt_wa_list, "GT_REF", "global");
> + wa_init_start(&lists->gt_wa_list, gt, "GT_REF", "global");
> gt_init_workarounds(gt, &lists->gt_wa_list);
> wa_init_finish(&lists->gt_wa_list);
>
> for_each_engine(engine, gt, id) {
> struct i915_wa_list *wal = &lists->engine[id].wa_list;
>
> - wa_init_start(wal, "REF", engine->name);
> + wa_init_start(wal, gt, "REF", engine->name);
> engine_init_workarounds(engine, wal);
> wa_init_finish(wal);
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index ae987e92251d..6c7ac73b69a5 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -688,8 +688,8 @@ i915_drop_caches_set(void *data, u64 val)
> unsigned int flags;
> int ret;
>
> - DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
> - val, val & DROP_ALL);
> + drm_dbg(&i915->drm, "Dropping caches: 0x%08llx [0x%08llx]\n",
> + val, val & DROP_ALL);
>
> ret = gt_drop_caches(to_gt(i915), val);
> if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 299f94a9fb87..8132743ca87e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1286,7 +1286,7 @@ int i915_gem_open(struct drm_i915_private *i915, struct drm_file *file)
> struct i915_drm_client *client;
> int ret = -ENOMEM;
>
> - DRM_DEBUG("\n");
> + drm_dbg(&i915->drm, "\n");
>
> file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
> if (!file_priv)
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 3047e80e1163..61ef2d9cfa62 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -179,7 +179,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> value = i915_perf_oa_timestamp_frequency(i915);
> break;
> default:
> - DRM_DEBUG("Unknown parameter %d\n", param->param);
> + drm_dbg(&i915->drm, "Unknown parameter %d\n", param->param);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b0180ea38de0..6c20817f8967 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1086,8 +1086,9 @@ static void ivb_parity_work(struct work_struct *work)
> kobject_uevent_env(&dev_priv->drm.primary->kdev->kobj,
> KOBJ_CHANGE, parity_event);
>
> - DRM_DEBUG("Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> - slice, row, bank, subbank);
> + drm_dbg(&dev_priv->drm,
> + "Parity error: Slice = %d, Row = %d, Bank = %d, Sub bank = %d.\n",
> + slice, row, bank, subbank);
>
> kfree(parity_event[4]);
> kfree(parity_event[3]);
> @@ -2774,7 +2775,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
> master_ctl = raw_reg_read(regs, GEN11_GFX_MSTR_IRQ);
> raw_reg_write(regs, GEN11_GFX_MSTR_IRQ, master_ctl);
> } else {
> - DRM_ERROR("Tile not supported: 0x%08x\n", master_tile_ctl);
> + drm_err(&i915->drm, "Tile not supported: 0x%08x\n",
> + master_tile_ctl);
> dg1_master_intr_enable(regs);
> return IRQ_NONE;
> }
> @@ -3940,7 +3942,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915,
> static void i8xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u16 eir, u16 eir_stuck)
> {
> - DRM_DEBUG("Master Error: EIR 0x%04x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error: EIR 0x%04x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%04x, masked\n",
> @@ -3975,7 +3977,7 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
> static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
> u32 eir, u32 eir_stuck)
> {
> - DRM_DEBUG("Master Error, EIR 0x%08x\n", eir);
> + drm_dbg(&dev_priv->drm, "Master Error, EIR 0x%08x\n", eir);
>
> if (eir_stuck)
> drm_dbg(&dev_priv->drm, "EIR stuck: 0x%08x, masked\n",
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 0dd597a7a11f..9e6f060592d8 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -530,9 +530,9 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
>
> if (OA_TAKEN(hw_tail, tail) > report_size &&
> __ratelimit(&stream->perf->tail_pointer_race))
> - DRM_NOTE("unlanded report(s) head=0x%x "
> - "tail=0x%x hw_tail=0x%x\n",
> - head, tail, hw_tail);
> + drm_notice(&stream->uncore->i915->drm,
> + "unlanded report(s) head=0x%x tail=0x%x hw_tail=0x%x\n",
> + head, tail, hw_tail);
>
> stream->oa_buffer.tail = gtt_offset + tail;
> stream->oa_buffer.aging_tail = gtt_offset + hw_tail;
> @@ -1015,7 +1015,8 @@ static int gen7_append_oa_reports(struct i915_perf_stream *stream,
> */
> if (report32[0] == 0) {
> if (__ratelimit(&stream->perf->spurious_report_rs))
> - DRM_NOTE("Skipping spurious, invalid OA report\n");
> + drm_notice(&uncore->i915->drm,
> + "Skipping spurious, invalid OA report\n");
> continue;
> }
>
> @@ -1602,8 +1603,9 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
> free_noa_wait(stream);
>
> if (perf->spurious_report_rs.missed) {
> - DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n",
> - perf->spurious_report_rs.missed);
> + drm_notice(>->i915->drm,
> + "%d spurious OA report notices suppressed due to ratelimiting\n",
> + perf->spurious_report_rs.missed);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_query.c b/drivers/gpu/drm/i915/i915_query.c
> index 6ec9c9fb7b0d..00871ef99792 100644
> --- a/drivers/gpu/drm/i915/i915_query.c
> +++ b/drivers/gpu/drm/i915/i915_query.c
> @@ -250,8 +250,9 @@ static int query_perf_config_data(struct drm_i915_private *i915,
> return total_size;
>
> if (query_item->length < total_size) {
> - DRM_DEBUG("Invalid query config data item size=%u expected=%u\n",
> - query_item->length, total_size);
> + drm_dbg(&i915->drm,
> + "Invalid query config data item size=%u expected=%u\n",
> + query_item->length, total_size);
> return -EINVAL;
> }
>
> @@ -418,9 +419,10 @@ static int query_perf_config_list(struct drm_i915_private *i915,
> } while (n_configs > alloc);
>
> if (query_item->length < sizeof_perf_config_list(n_configs)) {
> - DRM_DEBUG("Invalid query config list item size=%u expected=%zu\n",
> - query_item->length,
> - sizeof_perf_config_list(n_configs));
> + drm_dbg(&i915->drm,
> + "Invalid query config list item size=%u expected=%zu\n",
> + query_item->length,
> + sizeof_perf_config_list(n_configs));
> kfree(oa_config_ids);
> return -EINVAL;
> }
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 1e2750210831..595e8b574990 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -218,7 +218,8 @@ static const struct bin_attribute error_state_attr = {
> static void i915_setup_error_capture(struct device *kdev)
> {
> if (sysfs_create_bin_file(&kdev->kobj, &error_state_attr))
> - DRM_ERROR("error_state sysfs setup failed\n");
> + drm_err(&kdev_minor_to_i915(kdev)->drm,
> + "error_state sysfs setup failed\n");
> }
>
> static void i915_teardown_error_capture(struct device *kdev)
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index c39488eb9eeb..3b969d679c1e 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -73,14 +73,16 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason)
> char buf[512];
>
> if (!vma->node.stack) {
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: unknown owner\n",
> - vma->node.start, vma->node.size, reason);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm
> + "vma.node [%08llx + %08llx] %s: unknown owner\n",
> + vma->node.start, vma->node.size, reason);
> return;
> }
>
> stack_depot_snprint(vma->node.stack, buf, sizeof(buf), 0);
> - DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n",
> - vma->node.start, vma->node.size, reason, buf);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "vma.node [%08llx + %08llx] %s: inserted at %s\n",
> + vma->node.start, vma->node.size, reason, buf);
> }
>
> #else
> @@ -782,9 +784,9 @@ i915_vma_insert(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
> * attempt to find space.
> */
> if (size > end) {
> - DRM_DEBUG("Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> - size, flags & PIN_MAPPABLE ? "mappable" : "total",
> - end);
> + drm_dbg(&to_i915(vma->obj->base.dev)->drm,
> + "Attempting to bind an object larger than the aperture: request=%llu > %s aperture=%llu\n",
> + size, flags & PIN_MAPPABLE ? "mappable" : "total", end);
> return -ENOSPC;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 2a3e2869fe71..6c25c9e7090a 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -178,8 +178,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack to clear.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
> @@ -226,11 +227,12 @@ fw_domain_wait_ack_with_fallback(const struct intel_uncore_forcewake_domain *d,
> fw_clear(d, FORCEWAKE_KERNEL_FALLBACK);
> } while (!ack_detected && pass++ < 10);
>
> - DRM_DEBUG_DRIVER("%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> - intel_uncore_forcewake_domain_to_str(d->id),
> - type == ACK_SET ? "set" : "clear",
> - fw_ack(d),
> - pass);
> + drm_dbg(&d->uncore->i915->drm,
> + "%s had to use fallback to %s ack, 0x%x (passes %u)\n",
> + intel_uncore_forcewake_domain_to_str(d->id),
> + type == ACK_SET ? "set" : "clear",
> + fw_ack(d),
> + pass);
>
> return ack_detected ? 0 : -ETIMEDOUT;
> }
> @@ -255,8 +257,9 @@ static inline void
> 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));
> + drm_err(&d->uncore->i915->drm,
> + "%s: timed out waiting for forcewake ack request.\n",
> + intel_uncore_forcewake_domain_to_str(d->id));
> add_taint_for_CI(d->uncore->i915, TAINT_WARN); /* CI now unreliable */
> }
> }
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Partial abandonment of legacy DRM logging macros
2022-11-10 11:07 ` [Intel-gfx] " Andrzej Hajda
@ 2022-11-10 11:42 ` Tvrtko Ursulin
0 siblings, 0 replies; 11+ messages in thread
From: Tvrtko Ursulin @ 2022-11-10 11:42 UTC (permalink / raw)
To: Andrzej Hajda, Intel-gfx; +Cc: Jani Nikula, dri-devel
On 10/11/2022 11:07, Andrzej Hajda wrote:
> On 09.11.2022 11:46, Tvrtko Ursulin wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>
>> Convert some usages of legacy DRM logging macros into versions which tell
>> us on which device have the events occurred.
>>
>> v2:
>> * Don't have struct drm_device as local. (Jani, Ville)
>>
>> v3:
>> * Store gt, not i915, in workaround list. (John)
>
>
> Neither gt neither i915 does fit into wa list IMHO.
> The best solution would be provide context (i915/gt/whatever)
> as a function parameter, every time it is necessary.
> On the other side it should not block the patch.
> More below.
I thought about the very same lines but then concluded that the only _current_ usage of the lists is that they belong to a gt (directly or via engine). So having a back pointer felt passable.
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> # v2
>> Acked-by: Jani Nikula <jani.nikula@intel.com>
>> Cc: Jani Nikula <jani.nikula@intel.com>
>> Cc: John Harrison <John.C.Harrison@Intel.com>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> ---
>> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
>> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 26 ++++++++----
>> .../drm/i915/gt/intel_execlists_submission.c | 13 +++---
>> drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 4 +-
>> drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
>> drivers/gpu/drm/i915/gt/intel_gt_irq.c | 8 ++--
>> drivers/gpu/drm/i915/gt/intel_rps.c | 6 ++-
>> drivers/gpu/drm/i915/gt/intel_workarounds.c | 42 +++++++++++--------
>> .../gpu/drm/i915/gt/intel_workarounds_types.h | 3 ++
>> .../gpu/drm/i915/gt/selftest_workarounds.c | 4 +-
>> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
>> drivers/gpu/drm/i915/i915_gem.c | 2 +-
>> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
>> drivers/gpu/drm/i915/i915_irq.c | 12 +++---
>> drivers/gpu/drm/i915/i915_perf.c | 14 ++++---
>> drivers/gpu/drm/i915/i915_query.c | 12 +++---
>> drivers/gpu/drm/i915/i915_sysfs.c | 3 +-
>> drivers/gpu/drm/i915/i915_vma.c | 16 +++----
>> drivers/gpu/drm/i915/intel_uncore.c | 21 ++++++----
>> 19 files changed, 117 insertions(+), 81 deletions(-)
>>
>
> (...)
>
>> @@ -1749,7 +1755,7 @@ wa_list_apply(struct intel_gt *gt, const struct
>> i915_wa_list *wal)
>> intel_gt_mcr_read_any_fw(gt, wa->mcr_reg) :
>> intel_uncore_read_fw(uncore, wa->reg);
>> - wa_verify(wa, val, wal->name, "application");
>> + wa_verify(wal->gt, wa, val, wal->name, "application");
>
> This looks confusing at 1st sight, why wa_verify(wal->gt,...) and not
> wa_verify(gt,...). Can they differ? and similar questions as in case of
> redundant vars.
Would be always the same in current code. But point taken, it is confusing.. hm..
./gt/intel_workarounds.c: wa_list_apply(gt, >->wa_list);
./gt/intel_workarounds.c: wa_list_apply(engine->gt, &engine->wa_list);
Could drop the gt argument now that gt is available in the wa list.
> The same apply to wal->engine_name, which is almost unused anyway?
> Also AFAIK there is always sequence:
> 1. wa_init_start
> 2. *init_workarounds*
> 3. wa_init_finish - btw funny name.
Why funny? :) Because init collides with finish? Start of initialisation, initialisation, end of initialisation. :)
> Why not 1 and 3 embed in 2? Do we need this sequence.
It's just some common code so it doesn't have to be duplicated in the callers.
> Anyway all these comments are for wa handling, which should be addressed
> in other patch. So my r-b still holds, either with wal->i915, either
> with wal->gt.
>
> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Thanks, I think I'll go with v3 and follow up with wa_list_apply cleanup, so that my logging changes in gt/ are in before further CI delays and people can freely work on the GT logging macros without conflicts.
Regards,
Tvrtko
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-11-10 11:42 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-08 11:49 [PATCH] drm/i915: Partial abandonment of legacy DRM logging macros Tvrtko Ursulin
2022-11-08 12:01 ` Jani Nikula
2022-11-08 12:05 ` Tvrtko Ursulin
2022-11-08 12:05 ` [Intel-gfx] " Ville Syrjälä
2022-11-08 12:26 ` [PATCH v2] " Tvrtko Ursulin
2022-11-08 12:32 ` Jani Nikula
2022-11-08 15:15 ` [Intel-gfx] " Andrzej Hajda
2022-11-08 19:53 ` John Harrison
2022-11-09 10:46 ` [PATCH v3] " Tvrtko Ursulin
2022-11-10 11:07 ` [Intel-gfx] " Andrzej Hajda
2022-11-10 11:42 ` Tvrtko Ursulin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).