All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 03/23] drm/i915: Remove lrc default desc from GEM context
Date: Thu, 1 Aug 2019 09:53:15 +0100	[thread overview]
Message-ID: <340df1ef-0d75-131d-cc39-b3d9edb9c3ec@linux.intel.com> (raw)
In-Reply-To: <156464886350.2512.13201380958664478117@skylake-alporthouse-com>


On 01/08/2019 09:41, Chris Wilson wrote:
> Quoting Tvrtko Ursulin (2019-08-01 09:37:38)
>>
>> On 24/07/2019 10:20, Tvrtko Ursulin wrote:
>>>
>>> On 23/07/2019 19:38, Chris Wilson wrote:
>>>> We only compute the lrc_descriptor() on pinning the context, i.e.
>>>> infrequently, so we do not benefit from storing the template as the
>>>> addressing mode is also fixed for the lifetime of the intel_context.
>>>>
>>>> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>>>> ---
>>>>    drivers/gpu/drm/i915/gem/i915_gem_context.c   | 28 ++-----------------
>>>>    .../gpu/drm/i915/gem/i915_gem_context_types.h |  2 --
>>>>    drivers/gpu/drm/i915/gt/intel_lrc.c           | 12 +++++---
>>>>    drivers/gpu/drm/i915/gvt/scheduler.c          |  3 --
>>>>    4 files changed, 10 insertions(+), 35 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>>> b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>>> index b28c7ca681a8..1b3dc7258ef2 100644
>>>> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
>>>> @@ -397,30 +397,6 @@ static void context_close(struct i915_gem_context
>>>> *ctx)
>>>>        i915_gem_context_put(ctx);
>>>>    }
>>>> -static u32 default_desc_template(const struct drm_i915_private *i915,
>>>> -                 const struct i915_address_space *vm)
>>>> -{
>>>> -    u32 address_mode;
>>>> -    u32 desc;
>>>> -
>>>> -    desc = GEN8_CTX_VALID | GEN8_CTX_PRIVILEGE;
>>>> -
>>>> -    address_mode = INTEL_LEGACY_32B_CONTEXT;
>>>> -    if (vm && i915_vm_is_4lvl(vm))
>>>> -        address_mode = INTEL_LEGACY_64B_CONTEXT;
>>>> -    desc |= address_mode << GEN8_CTX_ADDRESSING_MODE_SHIFT;
>>>> -
>>>> -    if (IS_GEN(i915, 8))
>>>> -        desc |= GEN8_CTX_L3LLC_COHERENT;
>>>> -
>>>> -    /* TODO: WaDisableLiteRestore when we start using semaphore
>>>> -     * signalling between Command Streamers
>>>> -     * ring->ctx_desc_template |= GEN8_CTX_FORCE_RESTORE;
>>>> -     */
>>>> -
>>>> -    return desc;
>>>> -}
>>>> -
>>>>    static struct i915_gem_context *
>>>>    __create_context(struct drm_i915_private *i915)
>>>>    {
>>>> @@ -459,7 +435,6 @@ __create_context(struct drm_i915_private *i915)
>>>>        i915_gem_context_set_recoverable(ctx);
>>>>        ctx->ring_size = 4 * PAGE_SIZE;
>>>> -    ctx->desc_template = default_desc_template(i915, NULL);
>>>>        for (i = 0; i < ARRAY_SIZE(ctx->hang_timestamp); i++)
>>>>            ctx->hang_timestamp[i] = jiffies - CONTEXT_FAST_HANG_JIFFIES;
>>>> @@ -478,8 +453,9 @@ __set_ppgtt(struct i915_gem_context *ctx, struct
>>>> i915_address_space *vm)
>>>>        struct i915_gem_engines_iter it;
>>>>        struct intel_context *ce;
>>>> +    GEM_BUG_ON(old && i915_vm_is_4lvl(vm) != i915_vm_is_4lvl(old));
>>>> +
>>>>        ctx->vm = i915_vm_get(vm);
>>>> -    ctx->desc_template = default_desc_template(ctx->i915, vm);
>>>>        for_each_gem_engine(ce, i915_gem_context_lock_engines(ctx), it) {
>>>>            i915_vm_put(ce->vm);
>>>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context_types.h
>>>> b/drivers/gpu/drm/i915/gem/i915_gem_context_types.h
>>>> index 0ee61482ef94..a02d98494078 100644
>>>> --- a/drivers/gpu/drm/i915/gem/i915_gem_context_types.h
>>>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context_types.h
>>>> @@ -171,8 +171,6 @@ struct i915_gem_context {
>>>>        /** ring_size: size for allocating the per-engine ring buffer */
>>>>        u32 ring_size;
>>>> -    /** desc_template: invariant fields for the HW context descriptor */
>>>> -    u32 desc_template;
>>>>        /** guilty_count: How many times this context has caused a GPU
>>>> hang. */
>>>>        atomic_t guilty_count;
>>>> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c
>>>> b/drivers/gpu/drm/i915/gt/intel_lrc.c
>>>> index 632344c163a8..5fdac40015cf 100644
>>>> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
>>>> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
>>>> @@ -418,13 +418,17 @@ lrc_descriptor(struct intel_context *ce, struct
>>>> intel_engine_cs *engine)
>>>>        BUILD_BUG_ON(MAX_CONTEXT_HW_ID > (BIT(GEN8_CTX_ID_WIDTH)));
>>>>        BUILD_BUG_ON(GEN11_MAX_CONTEXT_HW_ID >
>>>> (BIT(GEN11_SW_CTX_ID_WIDTH)));
>>>> -    desc = ctx->desc_template;                /* bits  0-11 */
>>>> -    GEM_BUG_ON(desc & GENMASK_ULL(63, 12));
>>>> +    desc = INTEL_LEGACY_32B_CONTEXT;
>>>> +    if (i915_vm_is_4lvl(ce->vm))
>>>> +        desc = INTEL_LEGACY_64B_CONTEXT;
>>>
>>> if-else now that the vm null check is gone.
>>>
>>>> +    desc <<= GEN8_CTX_ADDRESSING_MODE_SHIFT;
>>>> +
>>>> +    desc |= GEN8_CTX_VALID | GEN8_CTX_PRIVILEGE;
>>>> +    if (IS_GEN(engine->i915, 8))
>>>> +        desc |= GEN8_CTX_L3LLC_COHERENT;
>>>
>>> Don't know.. it's nicer to keep it stored it both for Gen and context
>>> state. What's the problem with it?
>>
>> Ping.
> 
> There's no gem_context.

We could store it in ce then. We already have well defined control 
points for when vm changes when all are updated.

If done like this then it looks like assigning ctx->hw_id could also do 
the default_desc update, so that we can avoid even more work done at pin 
time.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2019-08-01  8:53 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-23 18:38 [PATCH 01/23] drm/i915: Move aliasing_ppgtt underneath its i915_ggtt Chris Wilson
2019-07-23 18:38 ` [PATCH 02/23] drm/i915/gt: Provide a local intel_context.vm Chris Wilson
2019-07-23 18:38 ` [PATCH 03/23] drm/i915: Remove lrc default desc from GEM context Chris Wilson
2019-07-24  9:20   ` Tvrtko Ursulin
2019-08-01  8:37     ` Tvrtko Ursulin
2019-08-01  8:41       ` Chris Wilson
2019-08-01  8:53         ` Tvrtko Ursulin [this message]
2019-08-01 10:57           ` Chris Wilson
2019-08-01 11:13             ` Chris Wilson
2019-08-01 15:29               ` Tvrtko Ursulin
2019-08-01 15:48                 ` Chris Wilson
2019-08-01 16:00                   ` Chris Wilson
2019-08-01 16:22                     ` Tvrtko Ursulin
2019-08-01 16:36                       ` Chris Wilson
2019-07-23 18:38 ` [PATCH 04/23] drm/i915: Push the ring creation flags to the backend Chris Wilson
2019-07-24 11:11   ` Tvrtko Ursulin
2019-07-26  8:43     ` Chris Wilson
2019-07-29 12:59       ` Tvrtko Ursulin
2019-07-30  9:38         ` Chris Wilson
2019-08-01  8:42           ` Tvrtko Ursulin
2019-08-01  8:45             ` Chris Wilson
2019-08-01  8:46             ` Chris Wilson
2019-07-23 18:38 ` [PATCH 05/23] drm/i915: Flush extra hard after writing relocations through the GTT Chris Wilson
2019-07-23 18:38 ` [PATCH 06/23] drm/i915: Hide unshrinkable context objects from the shrinker Chris Wilson
2019-07-23 18:38 ` [PATCH 07/23] drm/i915/gt: Move the [class][inst] lookup for engines onto the GT Chris Wilson
2019-07-25 21:21   ` Daniele Ceraolo Spurio
2019-07-26  9:22   ` Tvrtko Ursulin
2019-07-26  9:33     ` Chris Wilson
2019-07-26  9:51       ` Tvrtko Ursulin
2019-07-26  9:57         ` Chris Wilson
2019-07-23 18:38 ` [PATCH 08/23] drm/i915: Introduce for_each_user_engine() Chris Wilson
2019-07-23 18:38 ` [PATCH 09/23] drm/i915: Use intel_engine_lookup_user for probing HAS_BSD etc Chris Wilson
2019-07-23 18:38 ` [PATCH 10/23] drm/i915: Isolate i915_getparam_ioctl() Chris Wilson
2019-07-23 18:38 ` [PATCH 11/23] drm/i915: Only include active engines in the capture state Chris Wilson
2019-07-23 18:38 ` [PATCH 12/23] drm/i915: Teach execbuffer to take the engine wakeref not GT Chris Wilson
2019-07-23 18:38 ` [PATCH 13/23] drm/i915/gt: Track timeline activeness in enter/exit Chris Wilson
2019-07-23 18:38 ` [PATCH 14/23] drm/i915/gt: Convert timeline tracking to spinlock Chris Wilson
2019-07-23 18:38 ` [PATCH 15/23] drm/i915/gt: Guard timeline pinning with its own mutex Chris Wilson
2019-07-23 18:38 ` [PATCH 16/23] drm/i915/gt: Add to timeline requires the timeline mutex Chris Wilson
2019-07-23 18:38 ` [PATCH 17/23] drm/i915: Protect request retirement with timeline->mutex Chris Wilson
2019-07-23 18:38 ` [PATCH 18/23] drm/i915: Replace struct_mutex for batch pool serialisation Chris Wilson
2019-07-23 18:38 ` [PATCH 19/23] drm/i915/gt: Mark context->active_count as protected by timeline->mutex Chris Wilson
2019-07-23 18:38 ` [PATCH 20/23] drm/i915: Forgo last_fence active request tracking Chris Wilson
2019-07-23 18:38 ` [PATCH 21/23] drm/i915/overlay: Switch to using i915_active tracking Chris Wilson
2019-07-23 18:38 ` [PATCH 22/23] drm/i915: Extract intel_frontbuffer active tracking Chris Wilson
2019-07-23 18:38 ` [PATCH 23/23] drm/i915: Markup expected timeline locks for i915_active Chris Wilson
2019-07-23 20:16 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/23] drm/i915: Move aliasing_ppgtt underneath its i915_ggtt Patchwork
2019-07-23 20:27 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-07-23 20:38 ` ✓ Fi.CI.BAT: success " Patchwork
2019-07-24  4:13 ` ✗ Fi.CI.IGT: failure " Patchwork
2019-07-24  8:56 ` [PATCH 01/23] " Tvrtko Ursulin
2019-07-24  9:27   ` Chris Wilson
2019-07-24  9:37     ` Chris Wilson
2019-07-24  9:47       ` Chris Wilson
2019-07-24  9:54         ` Tvrtko Ursulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=340df1ef-0d75-131d-cc39-b3d9edb9c3ec@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.