Navi10 have a bug in the SDMA which can theoretically cause memory corruption with concurrent VMID flushes v2: explicitely check Navi10
Unified · Split
| @@ -364,8 +364,11 @@ static int amdgpu_vmid_grab_used(struct amdgpu_vm *vm, · 363 unmodified lines | |||
| 364 | if (updates && (!flushed || dma_fence_is_later(updates, flushed))) | 364 | if (updates && (!flushed || dma_fence_is_later(updates, flushed))) |
| 365 | needs_flush = true; | 365 | needs_flush = true; |
| 366 | 366 | ||
| 367 | /* Concurrent flushes are only possible starting with Vega10 */ | 367 | /* Concurrent flushes are only possible starting with Vega10 and |
| 368 | if (adev->asic_type < CHIP_VEGA10 && needs_flush) | 368 | * are broken on Navi10 and Navi14. |
| 369 | */ | ||
| 370 | if (needs_flush && (adev->asic_type < CHIP_VEGA10 || | ||
| 371 | adev->asic_type == CHIP_NAVI10)) | ||
| 369 | continue; | 372 | continue; |
| 370 | 373 | ||
| 371 | /* Good, we can use this VMID. Remember this submission as | 374 | /* Good, we can use this VMID. Remember this submission as |