if (adev->gfx.me.mqd_backup[mqd_idx])
                        memcpy(adev->gfx.me.mqd_backup[mqd_idx], mqd, sizeof(*mqd));
        } else {
+               mutex_lock(&adev->srbm_mutex);
+               nv_grbm_select(adev, ring->me, ring->pipe, ring->queue, 0);
+               if (ring->doorbell_index == adev->doorbell_index.gfx_ring0 << 1)
+                       gfx_v10_0_cp_gfx_set_doorbell(adev, ring);
+
+               nv_grbm_select(adev, 0, 0, 0, 0);
+               mutex_unlock(&adev->srbm_mutex);
                /* restore mqd with the backup copy */
                if (adev->gfx.me.mqd_backup[mqd_idx])
                        memcpy(mqd, adev->gfx.me.mqd_backup[mqd_idx], sizeof(*mqd));