diff options
author | Zhi Wang | 2016-05-04 00:26:57 +0200 |
---|---|---|
committer | Zhenyu Wang | 2016-10-14 12:15:25 +0200 |
commit | be1da7070aeaee23ff659c1a8cd992789ff86da4 (patch) | |
tree | 90db3d03d111f2122fc62f17dbb750c48115e994 /drivers/gpu/drm/i915/gvt/scheduler.c | |
parent | drm/i915/gvt: vGPU context switch (diff) | |
download | kernel-qcow2-linux-be1da7070aeaee23ff659c1a8cd992789ff86da4.tar.gz kernel-qcow2-linux-be1da7070aeaee23ff659c1a8cd992789ff86da4.tar.xz kernel-qcow2-linux-be1da7070aeaee23ff659c1a8cd992789ff86da4.zip |
drm/i915/gvt: vGPU command scanner
This patch introduces a command scanner to scan guest command buffers.
Signed-off-by: Yulei Zhang <yulei.zhang@intel.com>
Signed-off-by: Zhi Wang <zhi.a.wang@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/gvt/scheduler.c')
-rw-r--r-- | drivers/gpu/drm/i915/gvt/scheduler.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c index 2f96302c7b21..732672b7d22b 100644 --- a/drivers/gpu/drm/i915/gvt/scheduler.c +++ b/drivers/gpu/drm/i915/gvt/scheduler.c @@ -185,6 +185,14 @@ static int dispatch_workload(struct intel_vgpu_workload *workload) mutex_lock(&gvt->lock); + ret = intel_gvt_scan_and_shadow_workload(workload); + if (ret) + goto err; + + ret = intel_gvt_scan_and_shadow_wa_ctx(&workload->wa_ctx); + if (ret) + goto err; + ret = populate_shadow_context(workload); if (ret) goto err; @@ -345,6 +353,7 @@ static void complete_current_workload(struct intel_gvt *gvt, int ring_id) { struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; struct intel_vgpu_workload *workload; + int event; mutex_lock(&gvt->lock); @@ -355,6 +364,11 @@ static void complete_current_workload(struct intel_gvt *gvt, int ring_id) !atomic_read(&workload->shadow_ctx_active)); update_guest_context(workload); + + for_each_set_bit(event, workload->pending_events, + INTEL_GVT_EVENT_MAX) + intel_vgpu_trigger_virtual_event(workload->vgpu, + event); } gvt_dbg_sched("ring id %d complete workload %p status %d\n", |