Commit 0291150d authored by Christian König's avatar Christian König Committed by Alex Deucher

drm/amdgpu: make sure retry faults are handled in a work item on Vega

Looks like we can't enabled the IH1/IH2 feature for Vega20, make sure
retry faults are handled on a separate ring anyway.
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 47509189
...@@ -525,14 +525,29 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev, ...@@ -525,14 +525,29 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
addr = (u64)entry->src_data[0] << 12; addr = (u64)entry->src_data[0] << 12;
addr |= ((u64)entry->src_data[1] & 0xf) << 44; addr |= ((u64)entry->src_data[1] & 0xf) << 44;
if (retry_fault && amdgpu_gmc_filter_faults(adev, addr, entry->pasid, if (retry_fault) {
entry->timestamp)) /* Returning 1 here also prevents sending the IV to the KFD */
return 1; /* This also prevents sending it to KFD */
/* Process it onyl if it's the first fault for this address */
/* If it's the first fault for this address, process it normally */ if (entry->ih != &adev->irq.ih_soft &&
if (retry_fault && !in_interrupt() && amdgpu_gmc_filter_faults(adev, addr, entry->pasid,
amdgpu_vm_handle_fault(adev, entry->pasid, addr)) entry->timestamp))
return 1; /* This also prevents sending it to KFD */ return 1;
/* Delegate it to a different ring if the hardware hasn't
* already done it.
*/
if (in_interrupt()) {
amdgpu_irq_delegate(adev, entry, 8);
return 1;
}
/* Try to handle the recoverable page faults by filling page
* tables
*/
if (amdgpu_vm_handle_fault(adev, entry->pasid, addr))
return 1;
}
if (!printk_ratelimit()) if (!printk_ratelimit())
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment