On Wed, Nov 04, 2015 at 11:20:12PM +0200, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > 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@xxxxxxxxx> > Cc: Jike Song <jike.song@xxxxxxxxx> > Cc: Kevin Tian <kevin.tian@xxxxxxxxx> > Cc: Yu Zhang <yu.c.zhang@xxxxxxxxxxxxxxx> > Cc: Zhi Wang <zhi.a.wang@xxxxxxxxx> > Cc: Zhiyuan Lv <zhiyuan.lv@xxxxxxxxx> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> It looks good to me. Thanks for the change! Reviewed-by: Zhiyuan Lv <zhiyuan.lv@xxxxxxxxx> > --- > 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 > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx