> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Flora Cui > Sent: Thursday, May 18, 2017 11:37 PM > To: Christian K�nig > Cc: amd-gfx at lists.freedesktop.org > Subject: Re: [PATCH] drm/amdgpu: fix ocl test performance drop > > btw, what's about gfx9 for amdgpu_vm_ring_has_compute_vm_bug()? Is > the > workaround still needed? Gfx9 is not affected by that issue. Alex > > On Fri, May 19, 2017 at 10:25:19AM +0800, Flora Cui wrote: > > On Thu, May 18, 2017 at 01:38:15PM +0200, Christian König wrote: > > > Am 18.05.2017 um 09:45 schrieb Flora Cui: > > > >partial revert commit <6971d3d> - drm/amdgpu: cleanup logic in > > > >amdgpu_vm_flush > > > > > > > >Change-Id: Iadce9d613dfe9a739643a74050cea55854832adb > > > >Signed-off-by: Flora Cui <Flora.Cui at amd.com> > > > > > > I don't see how the revert should be faster than the original. > > > > > > Especially that amdgpu_vm_had_gpu_reset() is now called twice sounds > like > > > more overhead than necessary. > > > > > > Please explain further. > > > > > > Christian. > > > > > > >--- > > > > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 +++++--------- > > > > 1 file changed, 5 insertions(+), 9 deletions(-) > > > > > > > >diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > > >index 88420dc..a96bad6 100644 > > > >--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > > >+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > > >@@ -743,23 +743,19 @@ int amdgpu_vm_flush(struct amdgpu_ring > *ring, struct amdgpu_job *job) > > > > id->gws_size != job->gws_size || > > > > id->oa_base != job->oa_base || > > > > id->oa_size != job->oa_size); > > > >- bool vm_flush_needed = job->vm_needs_flush || > > > >- amdgpu_vm_ring_has_compute_vm_bug(ring); > > > > unsigned patch_offset = 0; > > > > int r; > > > >- if (amdgpu_vm_had_gpu_reset(adev, id)) { > > > >- gds_switch_needed = true; > > > >- vm_flush_needed = true; > > > >- } > > > >- > > > >- if (!vm_flush_needed && !gds_switch_needed) > > > >+ if (!job->vm_needs_flush && !gds_switch_needed && > > > >+ !amdgpu_vm_had_gpu_reset(adev, id) && > > > >+ !amdgpu_vm_ring_has_compute_vm_bug(ring)) > > > > return 0; > > > > if (ring->funcs->init_cond_exec) > > > > patch_offset = amdgpu_ring_init_cond_exec(ring); > > > >- if (ring->funcs->emit_vm_flush && vm_flush_needed) { > > [flora]: for compute ring & amdgpu_vm_ring_has_compute_vm_bug(), a > vm_flush is > > inserted. This might cause performance drop. > > > >+ if (ring->funcs->emit_vm_flush && > > > >+ (job->vm_needs_flush || amdgpu_vm_had_gpu_reset(adev, id))) > { > > > > struct fence *fence; > > > > trace_amdgpu_vm_flush(ring, job->vm_id, job- > >vm_pd_addr); > > > > > > > > _______________________________________________ > > amd-gfx mailing list > > amd-gfx at lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx