Commit bffa91da authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdkfd: start using tlb_seq from the VM subsystem



Instead of trying to figure out if a TLB flush is necessary or not use
the information provided by the VM subsystem now.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarPhilip <Yang&lt;Philip.Yang@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5255e146
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -705,6 +705,7 @@ struct kfd_process_device {
	/* VM context for GPUVM allocations */
	struct file *drm_file;
	void *drm_priv;
	uint64_t tlb_seq;

	/* GPUVM allocations storage */
	struct idr alloc_idr;
+7 −0
Original line number Diff line number Diff line
@@ -1560,6 +1560,7 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
		return ret;
	}
	pdd->drm_priv = drm_file->private_data;
	pdd->tlb_seq = 0;

	ret = kfd_process_device_reserve_ib_mem(pdd);
	if (ret)
@@ -1949,8 +1950,14 @@ int kfd_reserved_mem_mmap(struct kfd_dev *dev, struct kfd_process *process,

void kfd_flush_tlb(struct kfd_process_device *pdd, enum TLB_FLUSH_TYPE type)
{
	struct amdgpu_vm *vm = drm_priv_to_vm(pdd->drm_priv);
	uint64_t tlb_seq = amdgpu_vm_tlb_seq(vm);
	struct kfd_dev *dev = pdd->dev;

	if (pdd->tlb_seq == tlb_seq)
		return;

	pdd->tlb_seq = tlb_seq;
	if (dev->dqm->sched_policy == KFD_SCHED_POLICY_NO_HWS) {
		/* Nothing to flush until a VMID is assigned, which
		 * only happens when the first queue is created.