[PATCH v1 4/4] drm/i915/gvt: Select vgpu type by deviceID in hvm cfg file

Zhang, Xiong Y xiong.y.zhang at intel.com
Tue Sep 26 07:26:43 UTC 2017


> The vgpu type will be parsed through the device ID in hwm cfg, then can be
> passed into kernel.
> 
> The old parameters such as aperture_sz, gm_sz, fence_sz for finding a proper
> type are removed in this patch.
> 
> Signed-off-by: fred gao <fred.gao at intel.com>
> ---
>  drivers/gpu/drm/i915/gvt/xengt.c | 49 ++++++++--------------------------------
>  drivers/gpu/drm/i915/gvt/xengt.h |  4 +---
>  2 files changed, 10 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gvt/xengt.c
> b/drivers/gpu/drm/i915/gvt/xengt.c
> index 4cab2d8..79655a0 100644
> --- a/drivers/gpu/drm/i915/gvt/xengt.c
> +++ b/drivers/gpu/drm/i915/gvt/xengt.c
> @@ -127,24 +127,6 @@ static struct kobj_type xengt_ctrl_ktype = {
>  	.default_attrs = xengt_ctrl_attrs,
>  };
> 
> -static struct intel_vgpu_type *xengt_choose_vgpu_type(
> -		struct xengt_hvm_params *vp)
> -{
> -	struct intel_vgpu_type *vgpu_type;
> -	unsigned int  i;
> -
> -	for (i = 0;  i < xengt_priv.gvt->num_types; i++) {
> -		vgpu_type = &xengt_priv.gvt->types[i];
> -		if ((vgpu_type->low_gm_size >> 20) == vp->aperture_sz) {
> -			gvt_dbg_core("choose vgpu type:%d\n", i);
> -			return vgpu_type;
> -		}
> -	}
> -
> -	gvt_err("specify a wrong low_gm_sz in hvm.cfg: %d\n",
> vp->aperture_sz);
> -		return NULL;
> -}
> -
>  static int xengt_sysfs_add_instance(struct xengt_hvm_params *vp)  {
>  	int ret = 0;
> @@ -152,7 +134,7 @@ static int xengt_sysfs_add_instance(struct
> xengt_hvm_params *vp)
>  	struct xengt_hvm_dev *info;
>  	struct intel_vgpu_type *type;
> 
> -	type = xengt_choose_vgpu_type(vp);
> +	type = intel_gvt_ops->gvt_find_vgpu_type(xengt_priv.gvt,
> +vp->type_name);
>  	if (type == NULL) {
>  		gvt_err("choose vgpu type failed");
>  		return -EINVAL;
> @@ -243,37 +225,24 @@ static ssize_t xengt_sysfs_instance_manage(struct
> kobject *kobj,
>  	int param_cnt;
>  	char param_str[64];
>  	int rc;
> -	int high_gm_sz;
> -	int low_gm_sz;
> 
>  	/* We expect the param_str should be vmid,a,b,c (where the guest
>  	 * wants a MB aperture and b MB gm, and c fence registers) or -vmid
>  	 * (where we want to release the vgt instance).
>  	 */
>  	(void)sscanf(buf, "%63s", param_str);
> -	param_cnt = sscanf(param_str, "%d,%d,%d,%d,%d,%d", &vp.vm_id,
> -			&low_gm_sz, &high_gm_sz, &vp.fence_sz, &vp.gvt_primary,
> -			&vp.cap);
> -	vp.aperture_sz = low_gm_sz;
> -	vp.gm_sz = high_gm_sz + low_gm_sz;
> +	param_cnt = sscanf(param_str, "%d,%d,%d,%s", &vp.vm_id,
> +			&vp.gvt_primary, &vp.cap, vp.type_name);
>  	if (param_cnt == 1) {
>  		if (vp.vm_id >= 0)
>  			return -EINVAL;
> -	} else if (param_cnt == 4 || param_cnt == 5 || param_cnt == 6) {
> -		if (!(vp.vm_id > 0 && vp.aperture_sz > 0 &&
> -			vp.aperture_sz <= vp.gm_sz && vp.fence_sz > 0))
> -			return -EINVAL;
> +	} else if (param_cnt == 4) {
> 
> -		if (param_cnt == 5 || param_cnt == 6) {
> -			/* -1/0/1 means: not-specified, non-primary, primary */
> -			if (vp.gvt_primary < -1 || vp.gvt_primary > 1)
> -				return -EINVAL;
> -			if (vp.cap < 0 || vp.cap > 100)
> -				return -EINVAL;
> -		} else {
> -			vp.cap = 0; /* default 0 means no upper cap. */
> -			vp.gvt_primary = -1; /* no valid value specified. */
> -		}
> +		/* -1/0/1 means: not-specified, non-primary, primary */
> +		if (vp.gvt_primary < -1 || vp.gvt_primary > 1)
> +			return -EINVAL;
> +		if (vp.cap < 0 || vp.cap > 100)
> +			return -EINVAL;
>  	} else
>  		return -EINVAL;
> 
> diff --git a/drivers/gpu/drm/i915/gvt/xengt.h
> b/drivers/gpu/drm/i915/gvt/xengt.h
> index 0f5b660..232dde6 100644
> --- a/drivers/gpu/drm/i915/gvt/xengt.h
> +++ b/drivers/gpu/drm/i915/gvt/xengt.h
> @@ -48,15 +48,13 @@ struct xengt_hvm_dev {
> 
>  struct xengt_hvm_params {
>  	int vm_id;
> -	int aperture_sz; /* in MB */
> -	int gm_sz;  /* in MB */
> -	int fence_sz;
>  	int cap;
>  	/*
>  	 * 0/1: config the vgt device as secondary/primary VGA,
>  	 * -1: means the ioemu doesn't supply a value
>  	 */
>  	int gvt_primary;
[Zhang, Xiong Y] We don't use cap and gvt_primary, so we could remove them also.
> +	char type_name[16];
>  };
> 
>  /*
> --
> 2.7.4
> 
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev


More information about the intel-gvt-dev mailing list