diff options
| author | Chris Wilson <[email protected]> | 2019-08-09 19:25:16 +0100 |
|---|---|---|
| committer | Chris Wilson <[email protected]> | 2019-08-09 20:18:30 +0100 |
| commit | 4c60b1aaa255207eea2892d2d55b718db90d1ad8 (patch) | |
| tree | 8d080b17064d7de4d686ecb01f44d6c62a555f7d /drivers/gpu/drm/i915/gt/intel_context.c | |
| parent | 72e277759340dacdf3d68b0b2b4eae267e601d55 (diff) | |
drm/i915/gt: Make deferred context allocation explicit
Refactor the backends to handle the deferred context allocation in a
consistent manner, and allow calling it as an explicit first step in
pinning a context for the first time. This should make it easier for
backends to keep track of partially constructed contexts from
initialisation.
Signed-off-by: Chris Wilson <[email protected]>
Reviewed-by: Mika Kuoppala <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/i915/gt/intel_context.c')
| -rw-r--r-- | drivers/gpu/drm/i915/gt/intel_context.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/gt/intel_context.c b/drivers/gpu/drm/i915/gt/intel_context.c index c8777e222b12..41d38e661de7 100644 --- a/drivers/gpu/drm/i915/gt/intel_context.c +++ b/drivers/gpu/drm/i915/gt/intel_context.c @@ -53,6 +53,14 @@ int __intel_context_do_pin(struct intel_context *ce) if (likely(!atomic_read(&ce->pin_count))) { intel_wakeref_t wakeref; + if (unlikely(!test_bit(CONTEXT_ALLOC_BIT, &ce->flags))) { + err = ce->ops->alloc(ce); + if (unlikely(err)) + goto err; + + __set_bit(CONTEXT_ALLOC_BIT, &ce->flags); + } + err = 0; with_intel_runtime_pm(&ce->engine->i915->runtime_pm, wakeref) err = ce->ops->pin(ce); |