Skip to content

Commit

Permalink
drm/i915: replace for_each_engine()
Browse files Browse the repository at this point in the history
Having provided for_each_engine_id() for cases where the third (id)
argument is useful, we can now replace all the remaining instances with
a simpler version that takes only two parameters. In many cases, this
also allows the elimination of the local variable used in the iterator
(usually 'i').

v2:
    s/dev_priv/(dev_priv__)/ in body of for_each_engine_masked() [Chris Wilson]

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1458757194-17783-2-git-send-email-david.s.gordon@intel.com
  • Loading branch information
Dave Gordon authored and Tvrtko Ursulin committed Mar 24, 2016
1 parent c3232b1 commit b4ac5af
Show file tree
Hide file tree
Showing 11 changed files with 82 additions and 103 deletions.
50 changes: 22 additions & 28 deletions drivers/gpu/drm/i915/i915_debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,11 +398,11 @@ static void print_batch_pool_stats(struct seq_file *m,
struct drm_i915_gem_object *obj;
struct file_stats stats;
struct intel_engine_cs *engine;
int i, j;
int j;

memset(&stats, 0, sizeof(stats));

for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
for (j = 0; j < ARRAY_SIZE(engine->batch_pool.cache_list); j++) {
list_for_each_entry(obj,
&engine->batch_pool.cache_list[j],
Expand Down Expand Up @@ -638,13 +638,13 @@ static int i915_gem_batch_pool_info(struct seq_file *m, void *data)
struct drm_i915_gem_object *obj;
struct intel_engine_cs *engine;
int total = 0;
int ret, i, j;
int ret, j;

ret = mutex_lock_interruptible(&dev->struct_mutex);
if (ret)
return ret;

for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
for (j = 0; j < ARRAY_SIZE(engine->batch_pool.cache_list); j++) {
int count;

Expand Down Expand Up @@ -682,14 +682,14 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *engine;
struct drm_i915_gem_request *req;
int ret, any, i;
int ret, any;

ret = mutex_lock_interruptible(&dev->struct_mutex);
if (ret)
return ret;

any = 0;
for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
int count;

count = 0;
Expand Down Expand Up @@ -739,14 +739,14 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data)
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *engine;
int ret, i;
int ret;

ret = mutex_lock_interruptible(&dev->struct_mutex);
if (ret)
return ret;
intel_runtime_pm_get(dev_priv);

for_each_engine(engine, dev_priv, i)
for_each_engine(engine, dev_priv)
i915_ring_seqno_info(m, engine);

intel_runtime_pm_put(dev_priv);
Expand Down Expand Up @@ -933,7 +933,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
seq_printf(m, "Graphics Interrupt mask: %08x\n",
I915_READ(GTIMR));
}
for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
if (INTEL_INFO(dev)->gen >= 6) {
seq_printf(m,
"Graphics Interrupt mask (%s): %08x\n",
Expand Down Expand Up @@ -2044,7 +2044,7 @@ static int i915_dump_lrc(struct seq_file *m, void *unused)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *engine;
struct intel_context *ctx;
int ret, i;
int ret;

if (!i915.enable_execlists) {
seq_printf(m, "Logical Ring Contexts are disabled\n");
Expand All @@ -2057,7 +2057,7 @@ static int i915_dump_lrc(struct seq_file *m, void *unused)

list_for_each_entry(ctx, &dev_priv->context_list, link)
if (ctx != dev_priv->kernel_context)
for_each_engine(engine, dev_priv, i)
for_each_engine(engine, dev_priv)
i915_dump_lrc_obj(m, ctx, engine);

mutex_unlock(&dev->struct_mutex);
Expand All @@ -2077,8 +2077,7 @@ static int i915_execlists(struct seq_file *m, void *data)
u32 status;
u32 ctx_id;
struct list_head *cursor;
int ring_id, i;
int ret;
int i, ret;

if (!i915.enable_execlists) {
seq_puts(m, "Logical Ring Contexts are disabled\n");
Expand All @@ -2091,7 +2090,7 @@ static int i915_execlists(struct seq_file *m, void *data)

intel_runtime_pm_get(dev_priv);

for_each_engine(engine, dev_priv, ring_id) {
for_each_engine(engine, dev_priv) {
struct drm_i915_gem_request *head_req = NULL;
int count = 0;
unsigned long flags;
Expand Down Expand Up @@ -2250,12 +2249,12 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *engine;
struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
int unused, i;
int i;

if (!ppgtt)
return;

for_each_engine(engine, dev_priv, unused) {
for_each_engine(engine, dev_priv) {
seq_printf(m, "%s\n", engine->name);
for (i = 0; i < 4; i++) {
u64 pdp = I915_READ(GEN8_RING_PDP_UDW(engine, i));
Expand All @@ -2270,12 +2269,11 @@ static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *engine;
int i;

if (INTEL_INFO(dev)->gen == 6)
seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(GFX_MODE));

for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
seq_printf(m, "%s\n", engine->name);
if (INTEL_INFO(dev)->gen == 7)
seq_printf(m, "GFX_MODE: 0x%08x\n",
Expand Down Expand Up @@ -2342,9 +2340,8 @@ static int count_irq_waiters(struct drm_i915_private *i915)
{
struct intel_engine_cs *engine;
int count = 0;
int i;

for_each_engine(engine, i915, i)
for_each_engine(engine, i915)
count += engine->irq_refcount;

return count;
Expand Down Expand Up @@ -2455,7 +2452,6 @@ static void i915_guc_client_info(struct seq_file *m,
{
struct intel_engine_cs *engine;
uint64_t tot = 0;
uint32_t i;

seq_printf(m, "\tPriority %d, GuC ctx index: %u, PD offset 0x%x\n",
client->priority, client->ctx_index, client->proc_desc_offset);
Expand All @@ -2468,7 +2464,7 @@ static void i915_guc_client_info(struct seq_file *m,
seq_printf(m, "\tFailed doorbell: %u\n", client->b_fail);
seq_printf(m, "\tLast submission result: %d\n", client->retcode);

for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
seq_printf(m, "\tSubmissions: %llu %s\n",
client->submissions[engine->guc_id],
engine->name);
Expand All @@ -2485,7 +2481,6 @@ static int i915_guc_info(struct seq_file *m, void *data)
struct intel_guc guc;
struct i915_guc_client client = {};
struct intel_engine_cs *engine;
enum intel_engine_id i;
u64 total = 0;

if (!HAS_GUC_SCHED(dev_priv->dev))
Expand All @@ -2508,7 +2503,7 @@ static int i915_guc_info(struct seq_file *m, void *data)
seq_printf(m, "GuC last action error code: %d\n", guc.action_err);

seq_printf(m, "\nGuC submissions:\n");
for_each_engine(engine, dev_priv, i) {
for_each_engine(engine, dev_priv) {
seq_printf(m, "\t%-24s: %10llu, last seqno 0x%08x\n",
engine->name, guc.submissions[engine->guc_id],
guc.last_seqno[engine->guc_id]);
Expand Down Expand Up @@ -3181,19 +3176,18 @@ static int i915_semaphore_status(struct seq_file *m, void *unused)
kunmap_atomic(seqno);
} else {
seq_puts(m, " Last signal:");
for_each_engine(engine, dev_priv, id)
for_each_engine(engine, dev_priv)
for (j = 0; j < num_rings; j++)
seq_printf(m, "0x%08x\n",
I915_READ(engine->semaphore.mbox.signal[j]));
seq_putc(m, '\n');
}

seq_puts(m, "\nSync seqno:\n");
for_each_engine(engine, dev_priv, id) {
for (j = 0; j < num_rings; j++) {
for_each_engine(engine, dev_priv) {
for (j = 0; j < num_rings; j++)
seq_printf(m, " 0x%08x ",
engine->semaphore.sync_seqno[j]);
}
seq_putc(m, '\n');
}
seq_putc(m, '\n');
Expand Down
17 changes: 11 additions & 6 deletions drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1990,10 +1990,12 @@ static inline struct drm_i915_private *guc_to_i915(struct intel_guc *guc)
return container_of(guc, struct drm_i915_private, guc);
}

/* Iterate over initialised rings */
#define for_each_engine(ring__, dev_priv__, i__) \
for ((i__) = 0; (i__) < I915_NUM_ENGINES; (i__)++) \
for_each_if ((((ring__) = &(dev_priv__)->engine[(i__)]), intel_engine_initialized((ring__))))
/* Simple iterator over all initialised engines */
#define for_each_engine(engine__, dev_priv__) \
for ((engine__) = &(dev_priv__)->engine[0]; \
(engine__) < &(dev_priv__)->engine[I915_NUM_ENGINES]; \
(engine__)++) \
for_each_if (intel_engine_initialized(engine__))

/* Iterator with engine_id */
#define for_each_engine_id(engine__, dev_priv__, id__) \
Expand All @@ -2005,8 +2007,11 @@ static inline struct drm_i915_private *guc_to_i915(struct intel_guc *guc)

/* Iterator over subset of engines selected by mask */
#define for_each_engine_masked(engine__, dev_priv__, mask__) \
for ((engine__) = &dev_priv->engine[0]; (engine__) < &dev_priv->engine[I915_NUM_ENGINES]; (engine__)++) \
for_each_if (intel_engine_flag((engine__)) & (mask__) && intel_engine_initialized((engine__)))
for ((engine__) = &(dev_priv__)->engine[0]; \
(engine__) < &(dev_priv__)->engine[I915_NUM_ENGINES]; \
(engine__)++) \
for_each_if (((mask__) & intel_engine_flag(engine__)) && \
intel_engine_initialized(engine__))

enum hdmi_force_audio {
HDMI_AUDIO_OFF_DVI = -2, /* no aux data for HDMI-DVI converter */
Expand Down
Loading

0 comments on commit b4ac5af

Please sign in to comment.