[PATCH 1/8] drm/amdgpu: stop joining PDEs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2017å¹´12æ??09æ?¥ 00:41, Christian König wrote:
> That doesn't hit any more most of the time anyway.
agree, there is little chance that two PDBs are continue, Reviewed-by: 
Chunming Zhou <david1.zhou at amd.com>

>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 41 ++++++----------------------------
>   1 file changed, 7 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 3ecdbdfb04dd..d15b6edf7cce 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1076,8 +1076,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
>   	struct amdgpu_bo *shadow;
>   	struct amdgpu_ring *ring = NULL;
>   	uint64_t pd_addr, shadow_addr = 0;
> -	uint64_t last_pde = ~0, last_pt = ~0, last_shadow = ~0;
> -	unsigned count = 0, pt_idx, ndw = 0;
> +	unsigned pt_idx, ndw = 0;
>   	struct amdgpu_job *job;
>   	struct amdgpu_pte_update_params params;
>   	struct dma_fence *fence = NULL;
> @@ -1149,41 +1148,15 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
>   
>   		parent->entries[pt_idx].addr = pt | AMDGPU_PTE_VALID;
>   
> -		pde = pd_addr + pt_idx * 8;
>   		incr = amdgpu_bo_size(bo);
> -		if (((last_pde + 8 * count) != pde) ||
> -		    ((last_pt + incr * count) != pt) ||
> -		    (count == AMDGPU_VM_MAX_UPDATE_SIZE)) {
> -
> -			if (count) {
> -				if (shadow)
> -					params.func(&params,
> -						    last_shadow,
> -						    last_pt, count,
> -						    incr,
> -						    AMDGPU_PTE_VALID);
> -
> -				params.func(&params, last_pde,
> -					    last_pt, count, incr,
> -					    AMDGPU_PTE_VALID);
> -			}
> -
> -			count = 1;
> -			last_pde = pde;
> -			last_shadow = shadow_addr + pt_idx * 8;
> -			last_pt = pt;
> -		} else {
> -			++count;
> +		if (shadow) {
> +			pde = shadow_addr + pt_idx * 8;
> +			params.func(&params, pde, pt, 1, incr,
> +				    AMDGPU_PTE_VALID);
>   		}
> -	}
>   
> -	if (count) {
> -		if (vm->root.base.bo->shadow)
> -			params.func(&params, last_shadow, last_pt,
> -				    count, incr, AMDGPU_PTE_VALID);
> -
> -		params.func(&params, last_pde, last_pt,
> -			    count, incr, AMDGPU_PTE_VALID);
> +		pde = pd_addr + pt_idx * 8;
> +		params.func(&params, pde, pt, 1, incr, AMDGPU_PTE_VALID);
>   	}
>   
>   	if (!vm->use_cpu_for_update) {



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux