[PATCH] drm/i915/gvt: support MI_SEMAPHORE_WAIT
Yan Zhao
yan.y.zhao at intel.com
Mon Mar 25 06:15:14 UTC 2019
in linux 5.0, i915 driver now uses MI_SEMAPHORE_WAIT to sync requests.
GVT-g should add support for this command now
Signed-off-by: Yan Zhao <yan.y.zhao at intel.com>
---
drivers/gpu/drm/i915/gvt/cmd_parser.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c
index a16e527e9f02..e98f0a0d3083 100644
--- a/drivers/gpu/drm/i915/gvt/cmd_parser.c
+++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c
@@ -1538,7 +1538,30 @@ static int cmd_handler_mi_store_data_imm(struct parser_exec_state *s)
static int cmd_handler_mi_semaphore_wait(struct parser_exec_state *s)
{
- return unexpected_cmd(s);
+ unsigned long gma, gma_high;
+ int ret = 0;
+ int cmd_len = cmd_length(s);
+ struct intel_vgpu *vgpu = s->vgpu;
+ int gma_len = sizeof(u32);
+
+ if (cmd_len != 4 && cmd_len != 5) {
+ gvt_vgpu_err("Illegal cmd length %d\n", cmd_len);
+ return -EINVAL;
+ }
+
+ /* ppgtt is always safe */
+ if (!(cmd_val(s, 0) & (1 << 22)))
+ return ret;
+
+ gma = cmd_val(s, 2) & GENMASK(31, 0);
+ if (cmd_len == 5) {
+ gma_high = cmd_val(s, 3) & GENMASK(31, 0);
+ gma = (gma_high << 32) | gma;
+ gma_len = sizeof(u64);
+ }
+ ret = cmd_address_audit(s, gma, gma_len, false);
+ return ret;
+
}
static int cmd_handler_mi_report_perf_count(struct parser_exec_state *s)
--
2.17.1
More information about the intel-gvt-dev
mailing list