diff options
author | Jani Nikula <jani.nikula@intel.com> | 2019-01-24 03:41:34 -0500 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2019-01-24 03:41:34 -0500 |
commit | b42606b0397daf3b35345da99791968417bbced4 (patch) | |
tree | 8570aa54b4f2fe49591b69fe976e20c92e25483b | |
parent | 2b24408158276faf0f4a71eb97a2364686d5b06c (diff) | |
parent | 0f75551216091223efe1f18295f655aff6415385 (diff) |
Merge tag 'gvt-fixes-2019-01-24' of https://github.com/intel/gvt-linux into drm-intel-fixes
gvt-fixes-2019-01-24
- Fix destroy of shadow batch and indirect ctx (Weinan)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
From: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190124054801.GP7203@zhen-hp.sh.intel.com
-rw-r--r-- | drivers/gpu/drm/i915/gvt/scheduler.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c index 5567ddc7760f..55bb7885e228 100644 --- a/drivers/gpu/drm/i915/gvt/scheduler.c +++ b/drivers/gpu/drm/i915/gvt/scheduler.c | |||
@@ -332,6 +332,9 @@ static void release_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx) | |||
332 | 332 | ||
333 | i915_gem_object_unpin_map(wa_ctx->indirect_ctx.obj); | 333 | i915_gem_object_unpin_map(wa_ctx->indirect_ctx.obj); |
334 | i915_gem_object_put(wa_ctx->indirect_ctx.obj); | 334 | i915_gem_object_put(wa_ctx->indirect_ctx.obj); |
335 | |||
336 | wa_ctx->indirect_ctx.obj = NULL; | ||
337 | wa_ctx->indirect_ctx.shadow_va = NULL; | ||
335 | } | 338 | } |
336 | 339 | ||
337 | static int set_context_ppgtt_from_shadow(struct intel_vgpu_workload *workload, | 340 | static int set_context_ppgtt_from_shadow(struct intel_vgpu_workload *workload, |
@@ -911,11 +914,6 @@ static void complete_current_workload(struct intel_gvt *gvt, int ring_id) | |||
911 | 914 | ||
912 | list_del_init(&workload->list); | 915 | list_del_init(&workload->list); |
913 | 916 | ||
914 | if (!workload->status) { | ||
915 | release_shadow_batch_buffer(workload); | ||
916 | release_shadow_wa_ctx(&workload->wa_ctx); | ||
917 | } | ||
918 | |||
919 | if (workload->status || (vgpu->resetting_eng & ENGINE_MASK(ring_id))) { | 917 | if (workload->status || (vgpu->resetting_eng & ENGINE_MASK(ring_id))) { |
920 | /* if workload->status is not successful means HW GPU | 918 | /* if workload->status is not successful means HW GPU |
921 | * has occurred GPU hang or something wrong with i915/GVT, | 919 | * has occurred GPU hang or something wrong with i915/GVT, |
@@ -1283,6 +1281,9 @@ void intel_vgpu_destroy_workload(struct intel_vgpu_workload *workload) | |||
1283 | { | 1281 | { |
1284 | struct intel_vgpu_submission *s = &workload->vgpu->submission; | 1282 | struct intel_vgpu_submission *s = &workload->vgpu->submission; |
1285 | 1283 | ||
1284 | release_shadow_batch_buffer(workload); | ||
1285 | release_shadow_wa_ctx(&workload->wa_ctx); | ||
1286 | |||
1286 | if (workload->shadow_mm) | 1287 | if (workload->shadow_mm) |
1287 | intel_vgpu_mm_put(workload->shadow_mm); | 1288 | intel_vgpu_mm_put(workload->shadow_mm); |
1288 | 1289 | ||