mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 09:02:21 -04:00
drm/amdgpu: Add fw_reserved reserve-region
Use reserve region helpers for initializing/reserving fw_reserved region. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -1076,14 +1076,15 @@ int psp_update_fw_reservation(struct psp_context *psp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
amdgpu_bo_free_kernel(&adev->mman.fw_reserved_memory, NULL, NULL);
|
||||
amdgpu_ttm_unmark_vram_reserved(adev, AMDGPU_RESV_FW);
|
||||
|
||||
reserv_size = roundup(reserv_size, SZ_1M);
|
||||
|
||||
ret = amdgpu_bo_create_kernel_at(adev, reserv_addr, reserv_size, &adev->mman.fw_reserved_memory, NULL);
|
||||
amdgpu_ttm_init_vram_resv(adev, AMDGPU_RESV_FW,
|
||||
reserv_addr, reserv_size, false);
|
||||
ret = amdgpu_ttm_mark_vram_reserved(adev, AMDGPU_RESV_FW);
|
||||
if (ret) {
|
||||
dev_err(adev->dev, "reserve fw region failed(%d)!\n", ret);
|
||||
amdgpu_bo_free_kernel(&adev->mman.fw_reserved_memory, NULL, NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -5726,7 +5726,7 @@ int amdgpu_ras_add_critical_region(struct amdgpu_device *adev,
|
||||
|
||||
static void amdgpu_ras_critical_region_init(struct amdgpu_device *adev)
|
||||
{
|
||||
amdgpu_ras_add_critical_region(adev, adev->mman.fw_reserved_memory);
|
||||
amdgpu_ras_add_critical_region(adev, adev->mman.resv_region[AMDGPU_RESV_FW].bo);
|
||||
}
|
||||
|
||||
static void amdgpu_ras_critical_region_fini(struct amdgpu_device *adev)
|
||||
|
||||
@@ -1913,13 +1913,12 @@ static int amdgpu_ttm_reserve_tmr(struct amdgpu_device *adev)
|
||||
ctx->init = PSP_MEM_TRAIN_RESERVE_SUCCESS;
|
||||
}
|
||||
|
||||
ret = amdgpu_bo_create_kernel_at(
|
||||
adev, adev->gmc.real_vram_size - reserve_size, reserve_size,
|
||||
&adev->mman.fw_reserved_memory, NULL);
|
||||
amdgpu_ttm_init_vram_resv(adev, AMDGPU_RESV_FW,
|
||||
adev->gmc.real_vram_size - reserve_size,
|
||||
reserve_size, false);
|
||||
ret = amdgpu_ttm_mark_vram_reserved(adev, AMDGPU_RESV_FW);
|
||||
if (ret) {
|
||||
dev_err(adev->dev, "alloc tmr failed(%d)!\n", ret);
|
||||
amdgpu_bo_free_kernel(&adev->mman.fw_reserved_memory, NULL,
|
||||
NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2334,8 +2333,7 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
|
||||
amdgpu_ttm_unmark_vram_reserved(adev, AMDGPU_RESV_STOLEN_VGA);
|
||||
amdgpu_ttm_unmark_vram_reserved(adev, AMDGPU_RESV_STOLEN_EXTENDED);
|
||||
/* return the FW reserved memory back to VRAM */
|
||||
amdgpu_bo_free_kernel(&adev->mman.fw_reserved_memory, NULL,
|
||||
NULL);
|
||||
amdgpu_ttm_unmark_vram_reserved(adev, AMDGPU_RESV_FW);
|
||||
amdgpu_bo_free_kernel(&adev->mman.fw_reserved_memory_extend, NULL,
|
||||
NULL);
|
||||
amdgpu_ttm_unmark_vram_reserved(adev, AMDGPU_RESV_STOLEN_RESERVED);
|
||||
|
||||
@@ -106,7 +106,6 @@ struct amdgpu_mman {
|
||||
bool keep_stolen_vga_memory;
|
||||
|
||||
/* fw reserved memory */
|
||||
struct amdgpu_bo *fw_reserved_memory;
|
||||
struct amdgpu_bo *fw_reserved_memory_extend;
|
||||
|
||||
/* firmware VRAM reservation */
|
||||
|
||||
Reference in New Issue
Block a user