diff options
| author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2018-06-19 14:44:35 -0700 | 
|---|---|---|
| committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2018-06-19 14:44:35 -0700 | 
| commit | ac2bf28ad1a1708d7af84ff22b1ec60a89e69afb (patch) | |
| tree | 1cbaccdeb0688724b4a837bfde8c544f827c303c /drivers/gpu/drm/i915/gvt/cmd_parser.c | |
| parent | 1c3eced3d4ad7fd0a62c782205c36b96c0091813 (diff) | |
| parent | 57c8a484a9cbf1315b5299702d12aef04867eeee (diff) | |
Merge tag 'gvt-next-2018-06-19' of https://github.com/intel/gvt-linux into drm-intel-next-queued
gvt-next-2018-06-19
- fine-grained per vgpu locking (Colin)
- fine-grained vgpu scheduler locking (Colin)
- deliver windows guest cursor hotspot info (Tina)
- GVT-g BXT support (Colin)
- other misc and checker fixes (Chris, Xinyun)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180619090043.ly6gquafbmxuus6h@zhen-hp.sh.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/gvt/cmd_parser.c')
| -rw-r--r-- | drivers/gpu/drm/i915/gvt/cmd_parser.c | 43 | 
1 files changed, 18 insertions, 25 deletions
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c index 718ca08f9575..0dd88fe2e39a 100644 --- a/drivers/gpu/drm/i915/gvt/cmd_parser.c +++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c @@ -172,6 +172,7 @@ struct decode_info {  #define OP_MEDIA_INTERFACE_DESCRIPTOR_LOAD      OP_3D_MEDIA(0x2, 0x0, 0x2)  #define OP_MEDIA_GATEWAY_STATE                  OP_3D_MEDIA(0x2, 0x0, 0x3)  #define OP_MEDIA_STATE_FLUSH                    OP_3D_MEDIA(0x2, 0x0, 0x4) +#define OP_MEDIA_POOL_STATE                     OP_3D_MEDIA(0x2, 0x0, 0x5)  #define OP_MEDIA_OBJECT                         OP_3D_MEDIA(0x2, 0x1, 0x0)  #define OP_MEDIA_OBJECT_PRT                     OP_3D_MEDIA(0x2, 0x1, 0x2) @@ -1256,7 +1257,9 @@ static int gen8_check_mi_display_flip(struct parser_exec_state *s,  	if (!info->async_flip)  		return 0; -	if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) { +	if (IS_SKYLAKE(dev_priv) +		|| IS_KABYLAKE(dev_priv) +		|| IS_BROXTON(dev_priv)) {  		stride = vgpu_vreg_t(s->vgpu, info->stride_reg) & GENMASK(9, 0);  		tile = (vgpu_vreg_t(s->vgpu, info->ctrl_reg) &  				GENMASK(12, 10)) >> 10; @@ -1284,7 +1287,9 @@ static int gen8_update_plane_mmio_from_mi_display_flip(  	set_mask_bits(&vgpu_vreg_t(vgpu, info->surf_reg), GENMASK(31, 12),  		      info->surf_val << 12); -	if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) { +	if (IS_SKYLAKE(dev_priv) +		|| IS_KABYLAKE(dev_priv) +		|| IS_BROXTON(dev_priv)) {  		set_mask_bits(&vgpu_vreg_t(vgpu, info->stride_reg), GENMASK(9, 0),  			      info->stride_val);  		set_mask_bits(&vgpu_vreg_t(vgpu, info->ctrl_reg), GENMASK(12, 10), @@ -1308,7 +1313,9 @@ static int decode_mi_display_flip(struct parser_exec_state *s,  	if (IS_BROADWELL(dev_priv))  		return gen8_decode_mi_display_flip(s, info); -	if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) +	if (IS_SKYLAKE(dev_priv) +		|| IS_KABYLAKE(dev_priv) +		|| IS_BROXTON(dev_priv))  		return skl_decode_mi_display_flip(s, info);  	return -ENODEV; @@ -1317,26 +1324,14 @@ static int decode_mi_display_flip(struct parser_exec_state *s,  static int check_mi_display_flip(struct parser_exec_state *s,  		struct mi_display_flip_command_info *info)  { -	struct drm_i915_private *dev_priv = s->vgpu->gvt->dev_priv; - -	if (IS_BROADWELL(dev_priv) -		|| IS_SKYLAKE(dev_priv) -		|| IS_KABYLAKE(dev_priv)) -		return gen8_check_mi_display_flip(s, info); -	return -ENODEV; +	return gen8_check_mi_display_flip(s, info);  }  static int update_plane_mmio_from_mi_display_flip(  		struct parser_exec_state *s,  		struct mi_display_flip_command_info *info)  { -	struct drm_i915_private *dev_priv = s->vgpu->gvt->dev_priv; - -	if (IS_BROADWELL(dev_priv) -		|| IS_SKYLAKE(dev_priv) -		|| IS_KABYLAKE(dev_priv)) -		return gen8_update_plane_mmio_from_mi_display_flip(s, info); -	return -ENODEV; +	return gen8_update_plane_mmio_from_mi_display_flip(s, info);  }  static int cmd_handler_mi_display_flip(struct parser_exec_state *s) @@ -1615,15 +1610,10 @@ static int copy_gma_to_hva(struct intel_vgpu *vgpu, struct intel_vgpu_mm *mm,   */  static int batch_buffer_needs_scan(struct parser_exec_state *s)  { -	struct intel_gvt *gvt = s->vgpu->gvt; - -	if (IS_BROADWELL(gvt->dev_priv) || IS_SKYLAKE(gvt->dev_priv) -		|| IS_KABYLAKE(gvt->dev_priv)) { -		/* BDW decides privilege based on address space */ -		if (cmd_val(s, 0) & (1 << 8) && +	/* Decide privilege based on address space */ +	if (cmd_val(s, 0) & (1 << 8) &&  			!(s->vgpu->scan_nonprivbb & (1 << s->ring_id))) -			return 0; -	} +		return 0;  	return 1;  } @@ -2349,6 +2339,9 @@ static struct cmd_info cmd_info[] = {  	{"MEDIA_STATE_FLUSH", OP_MEDIA_STATE_FLUSH, F_LEN_VAR, R_RCS, D_ALL,  		0, 16, NULL}, +	{"MEDIA_POOL_STATE", OP_MEDIA_POOL_STATE, F_LEN_VAR, R_RCS, D_ALL, +		0, 16, NULL}, +  	{"MEDIA_OBJECT", OP_MEDIA_OBJECT, F_LEN_VAR, R_RCS, D_ALL, 0, 16, NULL},  	{"MEDIA_CURBE_LOAD", OP_MEDIA_CURBE_LOAD, F_LEN_VAR, R_RCS, D_ALL,  | 
