Am 2021-05-14 um 11:14 a.m. schrieb Christian König: > Am 14.05.21 um 16:42 schrieb Philip Yang: >> Need do a heavy-weight TLB flush to make sure we have no more dirty data >> in the cache for the unmapped pages. >> >> Define enum TLB_FLUSH_TYPE, add flush_type parameter to >> amdgpu_amdkfd_flush_gpu_tlb_pasid. >> >> Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx> > > Reviewed-by: Christian König <christian.koenig@xxxxxxx> Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> > >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 4 ++-- >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 9 ++++++++- >> drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 +- >> drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 4 ++-- >> 4 files changed, 13 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c >> index 5f6696a3c778..bfab2f9fdd17 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c >> @@ -670,10 +670,10 @@ int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct >> kgd_dev *kgd, uint16_t vmid) >> return 0; >> } >> -int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, >> uint16_t pasid) >> +int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, uint16_t >> pasid, >> + enum TLB_FLUSH_TYPE flush_type) >> { >> struct amdgpu_device *adev = (struct amdgpu_device *)kgd; >> - const uint32_t flush_type = 0; >> bool all_hub = false; >> if (adev->family == AMDGPU_FAMILY_AI) >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h >> index 313ee49b9f17..f4de50de359b 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h >> @@ -36,6 +36,12 @@ >> extern uint64_t amdgpu_amdkfd_total_mem_size; >> +enum TLB_FLUSH_TYPE { >> + TLB_FLUSH_LEGACY = 0, >> + TLB_FLUSH_LIGHTWEIGHT, >> + TLB_FLUSH_HEAVYWEIGHT >> +}; >> + >> struct amdgpu_device; >> struct kfd_bo_va_list { >> @@ -135,7 +141,8 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, >> enum kgd_engine_type engine, >> void amdgpu_amdkfd_set_compute_idle(struct kgd_dev *kgd, bool idle); >> bool amdgpu_amdkfd_have_atomics_support(struct kgd_dev *kgd); >> int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct kgd_dev *kgd, uint16_t >> vmid); >> -int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, uint16_t >> pasid); >> +int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, uint16_t >> pasid, >> + enum TLB_FLUSH_TYPE flush_type); >> bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 >> vmid); >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c >> b/drivers/gpu/drm/amd/amdkfd/kfd_process.c >> index 9d4f527bda7c..5b6c5669c03d 100644 >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c >> @@ -1853,7 +1853,7 @@ void kfd_flush_tlb(struct kfd_process_device *pdd) >> pdd->qpd.vmid); >> } else { >> amdgpu_amdkfd_flush_gpu_tlb_pasid(dev->kgd, >> - pdd->process->pasid); >> + pdd->process->pasid, TLB_FLUSH_LEGACY); >> } >> } >> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c >> b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c >> index a52e4594785f..f2901e7a993e 100644 >> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c >> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c >> @@ -1127,7 +1127,7 @@ svm_range_unmap_from_gpus(struct svm_range >> *prange, unsigned long start, >> break; >> } >> amdgpu_amdkfd_flush_gpu_tlb_pasid((struct kgd_dev *)adev, >> - p->pasid); >> + p->pasid, TLB_FLUSH_HEAVYWEIGHT); >> } >> return r; >> @@ -1183,7 +1183,7 @@ svm_range_map_to_gpu(struct amdgpu_device >> *adev, struct amdgpu_vm *vm, >> p = container_of(prange->svms, struct kfd_process, svms); >> amdgpu_amdkfd_flush_gpu_tlb_pasid((struct kgd_dev *)adev, >> - p->pasid); >> + p->pasid, TLB_FLUSH_LEGACY); >> } >> out: >> prange->mapping.bo_va = NULL; > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx