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 | 364 | if (updates && (!flushed || dma_fence_is_later(updates, flushed))) |
| 365 | 365 | needs_flush = true; |
| 366 | 366 | |
| 367 | − /* Concurrent flushes are only possible starting with Vega10 */ | |
| 368 | − if (adev->asic_type < CHIP_VEGA10 && needs_flush) | |
| 367 | + /* Concurrent flushes are only possible starting with Vega10 and | |
| 368 | + * are broken on Navi10 and Navi14. | |
| 369 | + */ | |
| 370 | + if (needs_flush && (adev->asic_type < CHIP_VEGA10 || | |
| 371 | + adev->asic_type == CHIP_NAVI10)) | |
| 369 | 372 | continue; |
| 370 | 373 | |
| 371 | 374 | /* Good, we can use this VMID. Remember this submission as |