drm/connector: Allow max possible encoders to attach to a connector
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_ring.c
index 8f5026c123ef34b7db1f9a6d060d39394ea13302..e5c83e164d82ac29ae41ae6c8e954e65bcdfdfbc 100644 (file)
@@ -28,8 +28,9 @@
  */
 #include <linux/seq_file.h>
 #include <linux/slab.h>
+#include <linux/uaccess.h>
 #include <linux/debugfs.h>
-#include <drm/drmP.h>
+
 #include <drm/amdgpu_drm.h>
 #include "amdgpu.h"
 #include "atom.h"
@@ -281,6 +282,16 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
                return r;
        }
 
+       r = amdgpu_device_wb_get(adev, &ring->trail_fence_offs);
+       if (r) {
+               dev_err(adev->dev,
+                       "(%d) ring trail_fence_offs wb alloc failed\n", r);
+               return r;
+       }
+       ring->trail_fence_gpu_addr =
+               adev->wb.gpu_addr + (ring->trail_fence_offs * 4);
+       ring->trail_fence_cpu_addr = &adev->wb.wb[ring->trail_fence_offs];
+
        r = amdgpu_device_wb_get(adev, &ring->cond_exe_offs);
        if (r) {
                dev_err(adev->dev, "(%d) ring cond_exec_polling wb alloc failed\n", r);
@@ -399,7 +410,7 @@ bool amdgpu_ring_soft_recovery(struct amdgpu_ring *ring, unsigned int vmid,
 {
        ktime_t deadline = ktime_add_us(ktime_get(), 10000);
 
-       if (!ring->funcs->soft_recovery || !fence)
+       if (amdgpu_sriov_vf(ring->adev) || !ring->funcs->soft_recovery || !fence)
                return false;
 
        atomic_inc(&ring->adev->gpu_reset_counter);