All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <ckoenig.leichtzumerken@gmail.com>
To: Philip Yang <Philip.Yang@amd.com>, amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2 2/2] drm/amdkfd: heavy-weight flush TLB after unmap
Date: Fri, 14 May 2021 17:14:47 +0200	[thread overview]
Message-ID: <d5fba451-f75b-b77c-7fbf-a289914e97e5@gmail.com> (raw)
In-Reply-To: <20210514144222.24206-1-Philip.Yang@amd.com>

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@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
>   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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  reply	other threads:[~2021-05-14 15:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-13 16:58 [PATCH 1/2] Revert "drm/amdkfd: flush TLB after updating GPU page table" Philip Yang
2021-05-13 16:58 ` [PATCH 2/2] drm/amdkfd: heavy-weight flush TLB after unmap Philip Yang
2021-05-13 17:18   ` Felix Kuehling
2021-05-14  7:24   ` Christian König
2021-05-14 14:42   ` [PATCH v2 " Philip Yang
2021-05-14 15:14     ` Christian König [this message]
2021-05-14 16:12       ` Felix Kuehling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d5fba451-f75b-b77c-7fbf-a289914e97e5@gmail.com \
    --to=ckoenig.leichtzumerken@gmail.com \
    --cc=Philip.Yang@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.