diff options
author | Christian König <christian.koenig@amd.com> | 2016-10-04 07:39:43 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-10-06 12:39:04 -0400 |
commit | 8036617e92e3fad49eef9bbe868b661c58249aff (patch) | |
tree | a20f4830cf3efbfd4502c0845f3c2fe7ec805557 | |
parent | 2f9ba199daf32dded4ef0237cd12efac451ebf47 (diff) |
drm/amdgpu: revert "use more than 64KB fragment size if possible"
This reverts commit 1dcd32fb9c54334ec948a0f18174a748d6b14364.
The block size is indeed an equal match, so this can cause performance regressions.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index bc4b22c6fc08..06f24322e7c3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -878,13 +878,13 @@ static void amdgpu_vm_frag_ptes(struct amdgpu_pte_update_params *params, | |||
878 | * allocation size to the fragment size. | 878 | * allocation size to the fragment size. |
879 | */ | 879 | */ |
880 | 880 | ||
881 | const uint64_t frag_align = 1 << AMDGPU_LOG2_PAGES_PER_FRAG; | 881 | /* SI and newer are optimized for 64KB */ |
882 | uint64_t frag_flags = AMDGPU_PTE_FRAG(AMDGPU_LOG2_PAGES_PER_FRAG); | ||
883 | uint64_t frag_align = 1 << AMDGPU_LOG2_PAGES_PER_FRAG; | ||
882 | 884 | ||
883 | uint64_t frag_start = ALIGN(start, frag_align); | 885 | uint64_t frag_start = ALIGN(start, frag_align); |
884 | uint64_t frag_end = end & ~(frag_align - 1); | 886 | uint64_t frag_end = end & ~(frag_align - 1); |
885 | 887 | ||
886 | uint32_t frag; | ||
887 | |||
888 | /* system pages are non continuously */ | 888 | /* system pages are non continuously */ |
889 | if (params->src || !(flags & AMDGPU_PTE_VALID) || | 889 | if (params->src || !(flags & AMDGPU_PTE_VALID) || |
890 | (frag_start >= frag_end)) { | 890 | (frag_start >= frag_end)) { |
@@ -893,10 +893,6 @@ static void amdgpu_vm_frag_ptes(struct amdgpu_pte_update_params *params, | |||
893 | return; | 893 | return; |
894 | } | 894 | } |
895 | 895 | ||
896 | /* use more than 64KB fragment size if possible */ | ||
897 | frag = lower_32_bits(frag_start | frag_end); | ||
898 | frag = likely(frag) ? __ffs(frag) : 31; | ||
899 | |||
900 | /* handle the 4K area at the beginning */ | 896 | /* handle the 4K area at the beginning */ |
901 | if (start != frag_start) { | 897 | if (start != frag_start) { |
902 | amdgpu_vm_update_ptes(params, vm, start, frag_start, | 898 | amdgpu_vm_update_ptes(params, vm, start, frag_start, |
@@ -906,7 +902,7 @@ static void amdgpu_vm_frag_ptes(struct amdgpu_pte_update_params *params, | |||
906 | 902 | ||
907 | /* handle the area in the middle */ | 903 | /* handle the area in the middle */ |
908 | amdgpu_vm_update_ptes(params, vm, frag_start, frag_end, dst, | 904 | amdgpu_vm_update_ptes(params, vm, frag_start, frag_end, dst, |
909 | flags | AMDGPU_PTE_FRAG(frag)); | 905 | flags | frag_flags); |
910 | 906 | ||
911 | /* handle the 4K area at the end */ | 907 | /* handle the 4K area at the end */ |
912 | if (frag_end != end) { | 908 | if (frag_end != end) { |