This is a revert of 
6aa56062eaba67adfb247cded244fd877329588d.
This was originally introduced to workaround reads of the ringbuffer
registers returning 0 on SandyBridge causing hangs due to ringbuffer
overflow. The root cause here was reads through the GT powerwell require
the forcewake dance, something we only learnt of later. Now it appears
that reading the reported head position from the HWS is returning
garbage, leading once again to hangs.
For example, on q35 the autoreported head reports:
  [  217.975608] head now 
00010000, actual 
00010000
  [  436.725613] head now 
00200000, actual 
00200000
  [  462.956033] head now 
00210000, actual 
00210010
  [  485.501409] head now 
00400000, actual 
00400020
  [  508.064280] head now 
00410000, actual 
00410000
  [  530.576078] head now 
00600000, actual 
00600020
  [  553.273489] head now 
00610000, actual 
00610018
which appears reasonably sane. In contrast, if we look at snb:
  [  141.970680] head now 
00e10000, actual 
00008238
  [  141.974062] head now 
02734000, actual 
000083c8
  [  141.974425] head now 
00e10000, actual 
00008488
  [  141.980374] head now 
032b5000, actual 
000088b8
  [  141.980885] head now 
03271000, actual 
00008950
  [  142.040628] head now 
02101000, actual 
00008b40
  [  142.180173] head now 
02734000, actual 
00009050
  [  142.181090] head now 
00000000, actual 
00000ae0
  [  142.183737] head now 
02734000, actual 
00009050
In addition, the automatic reporting of the head position is scheduled
to be defeatured in the future. It has no more utility, remove it.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45492
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Tested-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
 
 
        I915_WRITE_CTL(ring,
                        ((ring->size - PAGE_SIZE) & RING_NR_PAGES)
-                       | RING_REPORT_64K | RING_VALID);
+                       | RING_VALID);
 
        /* If the head is still not zero, the ring is dead */
        if ((I915_READ_CTL(ring) & RING_VALID) == 0 ||
        struct drm_device *dev = ring->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        unsigned long end;
-       u32 head;
-
-       /* If the reported head position has wrapped or hasn't advanced,
-        * fallback to the slow and accurate path.
-        */
-       head = intel_read_status_page(ring, 4);
-       if (head > ring->head) {
-               ring->head = head;
-               ring->space = ring_space(ring);
-               if (ring->space >= n)
-                       return 0;
-       }
 
        trace_i915_ring_wait_begin(ring);
        if (drm_core_check_feature(dev, DRIVER_GEM))