[PATCH] drm/i915/gvt: support MI_SEMAPHORE_WAIT

Zhenyu Wang zhenyuw at linux.intel.com
Mon Mar 25 06:50:22 UTC 2019


On 2019.03.25 02:15:14 -0400, Yan Zhao wrote:
> in linux 5.0, i915 driver now uses MI_SEMAPHORE_WAIT to sync requests.

Not in 5.0 kernel, but currently in drm-intel-next which should go for 5.2 kernel.

> GVT-g should add support for this command now

"otherwise i915 guest would fail in GVT cmd parser which caused guest VM failure."

>
> 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
> 
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20190325/4236fd29/attachment.sig>


More information about the intel-gvt-dev mailing list