diff options
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 37 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik_ih.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cz_ih.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/iceland_ih.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 7 | 
7 files changed, 6 insertions, 115 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index b095bbbbc302..fc91f3e54a87 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -3052,7 +3052,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,  	}  	INIT_KFIFO(vm->faults); -	vm->fault_credit = 16;  	return 0; @@ -3265,42 +3264,6 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)  }  /** - * amdgpu_vm_pasid_fault_credit - Check fault credit for given PASID - * - * @adev: amdgpu_device pointer - * @pasid: PASID do identify the VM - * - * This function is expected to be called in interrupt context. - * - * Returns: - * True if there was fault credit, false otherwise - */ -bool amdgpu_vm_pasid_fault_credit(struct amdgpu_device *adev, -				  unsigned int pasid) -{ -	struct amdgpu_vm *vm; - -	spin_lock(&adev->vm_manager.pasid_lock); -	vm = idr_find(&adev->vm_manager.pasid_idr, pasid); -	if (!vm) { -		/* VM not found, can't track fault credit */ -		spin_unlock(&adev->vm_manager.pasid_lock); -		return true; -	} - -	/* No lock needed. only accessed by IRQ handler */ -	if (!vm->fault_credit) { -		/* Too many faults in this VM */ -		spin_unlock(&adev->vm_manager.pasid_lock); -		return false; -	} - -	vm->fault_credit--; -	spin_unlock(&adev->vm_manager.pasid_lock); -	return true; -} - -/**   * amdgpu_vm_manager_init - init the VM manager   *   * @adev: amdgpu_device pointer diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index 2a8898d19c8b..e8dcfd59fc93 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -229,9 +229,6 @@ struct amdgpu_vm {  	/* Up to 128 pending retry page faults */  	DECLARE_KFIFO(faults, u64, 128); -	/* Limit non-retry fault storms */ -	unsigned int		fault_credit; -  	/* Points to the KFD process VM info */  	struct amdkfd_process_info *process_info; @@ -299,8 +296,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,  int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm, unsigned int pasid);  void amdgpu_vm_release_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm);  void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm); -bool amdgpu_vm_pasid_fault_credit(struct amdgpu_device *adev, -				  unsigned int pasid);  void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm,  			 struct list_head *validated,  			 struct amdgpu_bo_list_entry *entry); diff --git a/drivers/gpu/drm/amd/amdgpu/cik_ih.c b/drivers/gpu/drm/amd/amdgpu/cik_ih.c index b5775c6a857b..3e6c8c4067cb 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/cik_ih.c @@ -237,23 +237,7 @@ static u32 cik_ih_get_wptr(struct amdgpu_device *adev)   */  static bool cik_ih_prescreen_iv(struct amdgpu_device *adev)  { -	u32 ring_index = adev->irq.ih.rptr >> 2; -	u16 pasid; - -	switch (le32_to_cpu(adev->irq.ih.ring[ring_index]) & 0xff) { -	case 146: -	case 147: -		pasid = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]) >> 16; -		if (!pasid || amdgpu_vm_pasid_fault_credit(adev, pasid)) -			return true; -		break; -	default: -		/* Not a VM fault */ -		return true; -	} - -	adev->irq.ih.rptr += 16; -	return false; +	return true;  }   /** diff --git a/drivers/gpu/drm/amd/amdgpu/cz_ih.c b/drivers/gpu/drm/amd/amdgpu/cz_ih.c index df5ac4d85a00..447b3cbc47e5 100644 --- a/drivers/gpu/drm/amd/amdgpu/cz_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/cz_ih.c @@ -216,23 +216,7 @@ static u32 cz_ih_get_wptr(struct amdgpu_device *adev)   */  static bool cz_ih_prescreen_iv(struct amdgpu_device *adev)  { -	u32 ring_index = adev->irq.ih.rptr >> 2; -	u16 pasid; - -	switch (le32_to_cpu(adev->irq.ih.ring[ring_index]) & 0xff) { -	case 146: -	case 147: -		pasid = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]) >> 16; -		if (!pasid || amdgpu_vm_pasid_fault_credit(adev, pasid)) -			return true; -		break; -	default: -		/* Not a VM fault */ -		return true; -	} - -	adev->irq.ih.rptr += 16; -	return false; +	return true;  }  /** diff --git a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c index cf0fc61aebe6..2b94a6d1550e 100644 --- a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c @@ -216,23 +216,7 @@ static u32 iceland_ih_get_wptr(struct amdgpu_device *adev)   */  static bool iceland_ih_prescreen_iv(struct amdgpu_device *adev)  { -	u32 ring_index = adev->irq.ih.rptr >> 2; -	u16 pasid; - -	switch (le32_to_cpu(adev->irq.ih.ring[ring_index]) & 0xff) { -	case 146: -	case 147: -		pasid = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]) >> 16; -		if (!pasid || amdgpu_vm_pasid_fault_credit(adev, pasid)) -			return true; -		break; -	default: -		/* Not a VM fault */ -		return true; -	} - -	adev->irq.ih.rptr += 16; -	return false; +	return true;  }  /** diff --git a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c index dcdbb4d72472..9d7b43da6acc 100644 --- a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c @@ -227,23 +227,7 @@ static u32 tonga_ih_get_wptr(struct amdgpu_device *adev)   */  static bool tonga_ih_prescreen_iv(struct amdgpu_device *adev)  { -	u32 ring_index = adev->irq.ih.rptr >> 2; -	u16 pasid; - -	switch (le32_to_cpu(adev->irq.ih.ring[ring_index]) & 0xff) { -	case 146: -	case 147: -		pasid = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]) >> 16; -		if (!pasid || amdgpu_vm_pasid_fault_credit(adev, pasid)) -			return true; -		break; -	default: -		/* Not a VM fault */ -		return true; -	} - -	adev->irq.ih.rptr += 16; -	return false; +	return true;  }  /** diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c index d84b687240d1..b49290bcf109 100644 --- a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c @@ -258,12 +258,9 @@ static bool vega10_ih_prescreen_iv(struct amdgpu_device *adev)  	if (!pasid)  		return true; -	/* Not a retry fault, check fault credit */ -	if (!(dw5 & 0x80)) { -		if (!amdgpu_vm_pasid_fault_credit(adev, pasid)) -			goto ignore_iv; +	/* Not a retry fault */ +	if (!(dw5 & 0x80))  		return true; -	}  	/* Track retry faults in per-VM fault FIFO. */  	spin_lock(&adev->vm_manager.pasid_lock);  | 
