drm/amdgpu: remove unsafe optimization to drop preamble ib
authorjsg <jsg@openbsd.org>
Mon, 19 Jul 2021 10:08:03 +0000 (10:08 +0000)
committerjsg <jsg@openbsd.org>
Mon, 19 Jul 2021 10:08:03 +0000 (10:08 +0000)
From Jiansong Chen
8fa6473a61ecc9972ad543d8ba1d927d442d1f67 in linux 5.10.y/5.10.51
7d9c70d23550eb86a1bec1954ccaa8d6ec3a3328 in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_ib.c

index 28f20f0..163188c 100644 (file)
@@ -128,7 +128,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
        struct amdgpu_device *adev = ring->adev;
        struct amdgpu_ib *ib = &ibs[0];
        struct dma_fence *tmp = NULL;
-       bool skip_preamble, need_ctx_switch;
+       bool need_ctx_switch;
        unsigned patch_offset = ~0;
        struct amdgpu_vm *vm;
        uint64_t fence_ctx;
@@ -221,7 +221,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
        if (need_ctx_switch)
                status |= AMDGPU_HAVE_CTX_SWITCH;
 
-       skip_preamble = ring->current_ctx == fence_ctx;
        if (job && ring->funcs->emit_cntxcntl) {
                status |= job->preamble_status;
                status |= job->preemption_status;
@@ -239,14 +238,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
        for (i = 0; i < num_ibs; ++i) {
                ib = &ibs[i];
 
-               /* drop preamble IBs if we don't have a context switch */
-               if ((ib->flags & AMDGPU_IB_FLAG_PREAMBLE) &&
-                   skip_preamble &&
-                   !(status & AMDGPU_PREAMBLE_IB_PRESENT_FIRST) &&
-                   !amdgpu_mcbp &&
-                   !amdgpu_sriov_vf(adev)) /* for SRIOV preemption, Preamble CE ib must be inserted anyway */
-                       continue;
-
                if (job && ring->funcs->emit_frame_cntl) {
                        if (secure != !!(ib->flags & AMDGPU_IB_FLAGS_SECURE)) {
                                amdgpu_ring_emit_frame_cntl(ring, false, secure);