Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_engine_cs.c  | 3 +++
 drivers/gpu/drm/i915/intel_ringbuffer.c | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
b/drivers/gpu/drm/i915/intel_engine_cs.c
index 22c095035539..f2dfa3f9fbdf 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -29,6 +29,8 @@
 #include "intel_ringbuffer.h"
 #include "intel_lrc.h"
 
+#define GEN5_CXT_TOTAL_SIZE            ( 1 * PAGE_SIZE)
+
 /* Haswell does have the CXT_SIZE register however it does not appear to be
  * valid. Now, docs explain in dwords what is in the context object. The full
  * size is 70720 bytes, however, the power context and execlist context will
@@ -175,6 +177,7 @@ __intel_engine_context_size(struct drm_i915_private 
*dev_priv, u8 class)
                        return round_up(GEN6_CXT_TOTAL_SIZE(cxt_size) * 64,
                                        PAGE_SIZE);
                case 5:
+                       return GEN5_CXT_TOTAL_SIZE;
                case 4:
                case 3:
                case 2:
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index deb3cc7e08a8..4e9f2c546bb1 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1408,6 +1408,8 @@ static inline int mi_set_context(struct 
drm_i915_gem_request *rq, u32 flags)
        len = 4;
        if (IS_GEN7(i915))
                len += 2 + (num_rings ? 4*num_rings + 6 : 0);
+       if (IS_GEN5(i915))
+               len += 2;
 
        cs = intel_ring_begin(rq, len);
        if (IS_ERR(cs))
@@ -1430,6 +1432,8 @@ static inline int mi_set_context(struct 
drm_i915_gem_request *rq, u32 flags)
                                                GEN6_PSMI_SLEEP_MSG_DISABLE);
                        }
                }
+       } else if (IS_GEN5(i915)) {
+               *cs++ = MI_SUSPEND_FLUSH | MI_SUSPEND_FLUSH_EN;
        }
 
        *cs++ = MI_NOOP;
@@ -1464,6 +1468,8 @@ static inline int mi_set_context(struct 
drm_i915_gem_request *rq, u32 flags)
                        *cs++ = MI_NOOP;
                }
                *cs++ = MI_ARB_ON_OFF | MI_ARB_ENABLE;
+       } else if (IS_GEN5(i915)) {
+               *cs++ = MI_SUSPEND_FLUSH;
        }
 
        intel_ring_advance(rq, cs);
-- 
2.15.0

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

Reply via email to