Skip to content

Commit 7325e4b

Browse files
committed
Merge tag 'drm-intel-fixes-2019-01-24' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
drm/i915 fixes for v5.0-rc4: - fix priority boost - gvt: fix destroy of shadow batch and indirect ctx Signed-off-by: Dave Airlie <airlied@redhat.com> From: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/87k1iu1a2e.fsf@intel.com
2 parents edaf690 + b42606b commit 7325e4b

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

drivers/gpu/drm/i915/gvt/scheduler.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,9 @@ static void release_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx)
332332

333333
i915_gem_object_unpin_map(wa_ctx->indirect_ctx.obj);
334334
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;
335338
}
336339

337340
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)
911914

912915
list_del_init(&workload->list);
913916

914-
if (!workload->status) {
915-
release_shadow_batch_buffer(workload);
916-
release_shadow_wa_ctx(&workload->wa_ctx);
917-
}
918-
919917
if (workload->status || (vgpu->resetting_eng & ENGINE_MASK(ring_id))) {
920918
/* if workload->status is not successful means HW GPU
921919
* has occurred GPU hang or something wrong with i915/GVT,
@@ -1283,6 +1281,9 @@ void intel_vgpu_destroy_workload(struct intel_vgpu_workload *workload)
12831281
{
12841282
struct intel_vgpu_submission *s = &workload->vgpu->submission;
12851283

1284+
release_shadow_batch_buffer(workload);
1285+
release_shadow_wa_ctx(&workload->wa_ctx);
1286+
12861287
if (workload->shadow_mm)
12871288
intel_vgpu_mm_put(workload->shadow_mm);
12881289

drivers/gpu/drm/i915/intel_lrc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ static void __unwind_incomplete_requests(struct intel_engine_cs *engine)
303303
*/
304304
if (!(prio & I915_PRIORITY_NEWCLIENT)) {
305305
prio |= I915_PRIORITY_NEWCLIENT;
306+
active->sched.attr.priority = prio;
306307
list_move_tail(&active->sched.link,
307308
i915_sched_lookup_priolist(engine, prio));
308309
}
@@ -645,6 +646,9 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
645646
int i;
646647

647648
priolist_for_each_request_consume(rq, rn, p, i) {
649+
GEM_BUG_ON(last &&
650+
need_preempt(engine, last, rq_prio(rq)));
651+
648652
/*
649653
* Can we combine this request with the current port?
650654
* It has to be the same context/ringbuffer and not

0 commit comments

Comments
 (0)