[Intel-gfx] [PATCH 24/29] drm/i915: Turn vgpu pdps into an array

Zhiyuan Lv zhiyuan.lv at intel.com
Wed Nov 4 22:56:09 PST 2015


On Wed, Nov 04, 2015 at 11:20:12PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> We'll want to avoid performing arithmetic with register offsets, so
> instead calculating the vgpu PDP as pdp0_lo+offset, make the PDPs
> into an array. This way we can simply loop through them.
> 
> Cc: Eddie Dong <eddie.dong at intel.com>
> Cc: Jike Song <jike.song at intel.com>
> Cc: Kevin Tian <kevin.tian at intel.com>
> Cc: Yu Zhang <yu.c.zhang at linux.intel.com>
> Cc: Zhi Wang <zhi.a.wang at intel.com>
> Cc: Zhiyuan Lv <zhiyuan.lv at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

It looks good to me. Thanks for the change!

Reviewed-by: Zhiyuan Lv <zhiyuan.lv at intel.com>

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 11 ++++-------
>  drivers/gpu/drm/i915/i915_vgpu.h    | 12 ++++--------
>  2 files changed, 8 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 8dfcfd5..57cc7fd 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -909,14 +909,13 @@ static int gen8_ppgtt_notify_vgt(struct i915_hw_ppgtt *ppgtt, bool create)
>  	enum vgt_g2v_type msg;
>  	struct drm_device *dev = ppgtt->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	unsigned int offset = vgtif_reg(pdp0_lo);
>  	int i;
>  
>  	if (USES_FULL_48BIT_PPGTT(dev)) {
>  		u64 daddr = px_dma(&ppgtt->pml4);
>  
> -		I915_WRITE(offset, lower_32_bits(daddr));
> -		I915_WRITE(offset + 4, upper_32_bits(daddr));
> +		I915_WRITE(vgtif_reg(pdp[0].lo), lower_32_bits(daddr));
> +		I915_WRITE(vgtif_reg(pdp[0].hi), upper_32_bits(daddr));
>  
>  		msg = (create ? VGT_G2V_PPGTT_L4_PAGE_TABLE_CREATE :
>  				VGT_G2V_PPGTT_L4_PAGE_TABLE_DESTROY);
> @@ -924,10 +923,8 @@ static int gen8_ppgtt_notify_vgt(struct i915_hw_ppgtt *ppgtt, bool create)
>  		for (i = 0; i < GEN8_LEGACY_PDPES; i++) {
>  			u64 daddr = i915_page_dir_dma_addr(ppgtt, i);
>  
> -			I915_WRITE(offset, lower_32_bits(daddr));
> -			I915_WRITE(offset + 4, upper_32_bits(daddr));
> -
> -			offset += 8;
> +			I915_WRITE(vgtif_reg(pdp[i].lo), lower_32_bits(daddr));
> +			I915_WRITE(vgtif_reg(pdp[i].hi), upper_32_bits(daddr));
>  		}
>  
>  		msg = (create ? VGT_G2V_PPGTT_L3_PAGE_TABLE_CREATE :
> diff --git a/drivers/gpu/drm/i915/i915_vgpu.h b/drivers/gpu/drm/i915/i915_vgpu.h
> index 21c97f4..2c97d5a 100644
> --- a/drivers/gpu/drm/i915/i915_vgpu.h
> +++ b/drivers/gpu/drm/i915/i915_vgpu.h
> @@ -92,14 +92,10 @@ struct vgt_if {
>  	uint32_t g2v_notify;
>  	uint32_t rsv6[7];
>  
> -	uint32_t pdp0_lo;
> -	uint32_t pdp0_hi;
> -	uint32_t pdp1_lo;
> -	uint32_t pdp1_hi;
> -	uint32_t pdp2_lo;
> -	uint32_t pdp2_hi;
> -	uint32_t pdp3_lo;
> -	uint32_t pdp3_hi;
> +	struct {
> +		uint32_t lo;
> +		uint32_t hi;
> +	} pdp[4];
>  
>  	uint32_t execlist_context_descriptor_lo;
>  	uint32_t execlist_context_descriptor_hi;
> -- 
> 2.4.10
> 


More information about the Intel-gfx mailing list