From: Ville Syrjälä <ville.syrj...@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.d...@intel.com>
Cc: Jike Song <jike.s...@intel.com>
Cc: Kevin Tian <kevin.t...@intel.com>
Cc: Yu Zhang <yu.c.zh...@linux.intel.com>
Cc: Zhi Wang <zhi.a.w...@intel.com>
Cc: Zhiyuan Lv <zhiyuan...@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrj...@linux.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

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to