--- /dev/null
+From foo@baz Fri Sep 28 09:06:10 PDT 2012
+Date: Fri, 28 Sep 2012 09:06:10 -0700
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Subject: Revert: drm/i915: correctly order the ring init sequence
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+This reverts commit 57ecc93ce680b1ace1f9e79d588dabe32353202c which
+really is commit 0d8957c8a90bbb5d34fab9a304459448a5131e06 upstream as it
+has been reported to cause problems in the 3.4.y kernel series.
+
+Cc: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
+Cc: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
+Cc: Jani Nikula <jani.nikula@intel.com>
+Cc: Yang Guang <guang.a.yang@intel.com>
+Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_ringbuffer.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
++++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
+@@ -258,6 +258,8 @@ static int init_ring_common(struct intel
+ I915_WRITE_HEAD(ring, 0);
+ ring->write_tail(ring, 0);
+
++ /* Initialize the ring. */
++ I915_WRITE_START(ring, obj->gtt_offset);
+ head = I915_READ_HEAD(ring) & HEAD_ADDR;
+
+ /* G45 ring initialization fails to reset head to zero */
+@@ -283,11 +285,6 @@ static int init_ring_common(struct intel
+ }
+ }
+
+- /* Initialize the ring. This must happen _after_ we've cleared the ring
+- * registers with the above sequence (the readback of the HEAD registers
+- * also enforces ordering), otherwise the hw might lose the new ring
+- * register values. */
+- I915_WRITE_START(ring, obj->gtt_offset);
+ I915_WRITE_CTL(ring,
+ ((ring->size - PAGE_SIZE) & RING_NR_PAGES)
+ | RING_VALID);