Skip to content

Commit 719d84f

Browse files
Lijo Lazaralexdeucher
authored andcommitted
drm/amdgpu: Add more checks to discovery fetch
Add more checks for valid vram size and log error, if any. Signed-off-by: Lijo Lazar <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 4e69690 commit 719d84f

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,9 +270,10 @@ static int amdgpu_discovery_read_binary_from_sysmem(struct amdgpu_device *adev,
270270
static int amdgpu_discovery_read_binary_from_mem(struct amdgpu_device *adev,
271271
uint8_t *binary)
272272
{
273+
bool sz_valid = true;
273274
uint64_t vram_size;
274-
u32 msg;
275275
int i, ret = 0;
276+
u32 msg;
276277

277278
if (!amdgpu_sriov_vf(adev)) {
278279
/* It can take up to a second for IFWI init to complete on some dGPUs,
@@ -291,16 +292,25 @@ static int amdgpu_discovery_read_binary_from_mem(struct amdgpu_device *adev,
291292
}
292293
}
293294

294-
vram_size = (uint64_t)RREG32(mmRCC_CONFIG_MEMSIZE) << 20;
295+
vram_size = RREG32(mmRCC_CONFIG_MEMSIZE);
296+
if (!vram_size || vram_size == U32_MAX)
297+
sz_valid = false;
298+
else
299+
vram_size <<= 20;
295300

296-
if (vram_size) {
301+
if (sz_valid) {
297302
uint64_t pos = vram_size - DISCOVERY_TMR_OFFSET;
298303
amdgpu_device_vram_access(adev, pos, (uint32_t *)binary,
299304
adev->mman.discovery_tmr_size, false);
300305
} else {
301306
ret = amdgpu_discovery_read_binary_from_sysmem(adev, binary);
302307
}
303308

309+
if (ret)
310+
dev_err(adev->dev,
311+
"failed to read discovery info from memory, vram size read: %llx",
312+
vram_size);
313+
304314
return ret;
305315
}
306316

0 commit comments

Comments
 (0)