[PATCH 3/8] drm/amdgpu: avoid the modulo in amdgpu_vm_get_entry

Chunming Zhou zhoucm1 at amd.com
Mon Dec 11 05:40:24 UTC 2017


Reviewed-by: Chunming Zhou <david1.zhou at amd.com>


On 2017年12月09日 00:41, Christian König wrote:
> We can do this with a simple mask as well.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 796375484f6f..400a00fababd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1288,11 +1288,11 @@ void amdgpu_vm_get_entry(struct amdgpu_pte_update_params *p, uint64_t addr,
>   	*parent = NULL;
>   	*entry = &p->vm->root;
>   	while ((*entry)->entries) {
> -		unsigned idx = addr >> amdgpu_vm_level_shift(p->adev, level++);
> +		unsigned shift = amdgpu_vm_level_shift(p->adev, level++);
>   
> -		idx %= amdgpu_bo_size((*entry)->base.bo) / 8;
>   		*parent = *entry;
> -		*entry = &(*entry)->entries[idx];
> +		*entry = &(*entry)->entries[addr >> shift];
> +		addr &= (1ULL << shift) - 1;
>   	}
>   
>   	if (level != p->adev->vm_manager.num_level)



More information about the amd-gfx mailing list