diff options
| author | Philip Yang <Philip.Yang@amd.com> | 2026-04-27 16:30:23 +0300 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2026-05-05 17:17:22 +0300 |
| commit | e6c2e6c2e1fa066968a16aca1cb66cd1bdde7741 (patch) | |
| tree | df0984e91ce3c2bae6f9ab386e42f3658fcbd416 /scripts/stackdelta | |
| parent | 78d2e624fa073c14970aa097adcf3ea31c157a66 (diff) | |
| download | linux-e6c2e6c2e1fa066968a16aca1cb66cd1bdde7741.tar.xz | |
drm/amdgpu: zero-initialize GART table on allocation
GART TLB is flushed after unmapping but not after mapping. Since
amdgpu_bo_create_kernel() does not zero-initialize the buffer, when a
single PTE is written the TLB may speculatively load other uninitialized
entries from the same cacheline. Those garbage entries can appear valid,
and a subsequent write to another PTE in the same cacheline may cause the
GPU to use a stale garbage PTE from the TLB.
Fix this by calling memset_io() to zero-initialize the GART table with
gart_pte_flags immediately after allocation.
Using AMDGPU_GEM_CREATE_VRAM_CLEARED, SDMA-based clear will not work
since SDMA needs GART to be initialized to work.
Suggested-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit d9af8263b82b6eaa60c5718e0c6631c5037e4b24)
Cc: stable@vger.kernel.org
Diffstat (limited to 'scripts/stackdelta')
0 files changed, 0 insertions, 0 deletions
