Skip to content

Commit

Permalink
drm/i915: Remove posting-read for forcewake put
Browse files Browse the repository at this point in the history
We can relax the requirement upon ourselves that the forcewake is
released immediately and just allow it to occur naturally following our
mmio request.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170323101944.21627-5-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Mar 23, 2017
1 parent d2dc94b commit 0f966aa
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 33 deletions.
1 change: 0 additions & 1 deletion drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -783,7 +783,6 @@ struct intel_uncore {
u32 val_set;
u32 val_clear;
i915_reg_t reg_ack;
i915_reg_t reg_post;
u32 val_reset;
} fw_domain[FW_DOMAIN_ID_COUNT];

Expand Down
33 changes: 1 addition & 32 deletions drivers/gpu/drm/i915/intel_uncore.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,6 @@ fw_domain_put(struct drm_i915_private *i915,
__raw_i915_write32(i915, d->reg_set, d->val_clear);
}

static inline void
fw_domain_posting_read(struct drm_i915_private *i915,
const struct intel_uncore_forcewake_domain *d)
{
/* something from same cacheline, but not from the set register */
if (i915_mmio_reg_valid(d->reg_post))
__raw_posting_read(i915, d->reg_post);
}

static void
fw_domains_get(struct drm_i915_private *i915, enum forcewake_domains fw_domains)
{
Expand Down Expand Up @@ -141,27 +132,12 @@ fw_domains_put(struct drm_i915_private *i915, enum forcewake_domains fw_domains)

GEM_BUG_ON(fw_domains & ~i915->uncore.fw_domains);

for_each_fw_domain_masked(d, fw_domains, i915, tmp) {
for_each_fw_domain_masked(d, fw_domains, i915, tmp)
fw_domain_put(i915, d);
fw_domain_posting_read(i915, d);
}

i915->uncore.fw_domains_active &= ~fw_domains;
}

static void
fw_domains_posting_read(struct drm_i915_private *i915)
{
struct intel_uncore_forcewake_domain *d;
unsigned int tmp;

/* No need to do for all, just do for first found */
for_each_fw_domain(d, i915, tmp) {
fw_domain_posting_read(i915, d);
break;
}
}

static void
fw_domains_reset(struct drm_i915_private *i915,
enum forcewake_domains fw_domains)
Expand All @@ -176,8 +152,6 @@ fw_domains_reset(struct drm_i915_private *i915,

for_each_fw_domain_masked(d, fw_domains, i915, tmp)
fw_domain_reset(i915, d);

fw_domains_posting_read(i915);
}

static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv)
Expand Down Expand Up @@ -1180,11 +1154,6 @@ static void fw_domain_init(struct drm_i915_private *dev_priv,
d->val_clear = _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL);
}

if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
d->reg_post = FORCEWAKE_ACK_VLV;
else if (IS_GEN6(dev_priv) || IS_GEN7(dev_priv) || IS_GEN8(dev_priv))
d->reg_post = ECOBUS;

d->id = domain_id;

BUILD_BUG_ON(FORCEWAKE_RENDER != (1 << FW_DOMAIN_ID_RENDER));
Expand Down

0 comments on commit 0f966aa

Please sign in to comment.