[PATCH 5/7] drm/amdgpu: flush the HDP only once for CPU based VM updates

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

 



I'm wondering if you need a HDP flush in update_directories at all. Are
there cases where the directories are updated but the page tables are not?

Also, in case of amdgpu_cs, I think we already have an HPD flush anyway.
For KFD we don't use kernel-based submission, so we'd have to add an HDP
flush into the KFD-specific VM mapping code.

Either way, this is Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>

Regards,
  Felix


On 17-07-12 04:31 AM, Christian König wrote:
> From: Christian König <christian.koenig at amd.com>
>
> No need to do this after every single update.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index f52a358..1c6018b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -991,10 +991,6 @@ static void amdgpu_vm_cpu_set_ptes(struct amdgpu_pte_update_params *params,
>  					i, value, flags);
>  		addr += incr;
>  	}
> -
> -	/* Flush HDP */
> -	mb();
> -	amdgpu_gart_flush_gpu_tlb(params->adev, 0);
>  }
>  
>  static int amdgpu_vm_wait_pd(struct amdgpu_device *adev, struct amdgpu_vm *vm,
> @@ -1237,6 +1233,12 @@ int amdgpu_vm_update_directories(struct amdgpu_device *adev,
>  	if (r)
>  		amdgpu_vm_invalidate_level(&vm->root);
>  
> +	if (vm->use_cpu_for_update) {
> +		/* Flush HDP */
> +		mb();
> +		amdgpu_gart_flush_gpu_tlb(adev, 0);
> +	}
> +
>  	return r;
>  }
>  
> @@ -1745,6 +1747,12 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
>  		list_add(&bo_va->vm_status, &vm->cleared);
>  	spin_unlock(&vm->status_lock);
>  
> +	if (vm->use_cpu_for_update) {
> +		/* Flush HDP */
> +		mb();
> +		amdgpu_gart_flush_gpu_tlb(adev, 0);
> +	}
> +
>  	return 0;
>  }
>  



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

  Powered by Linux