mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-01 01:14:19 -04:00
drm/amdgpu/psp: don't free PSP buffers on suspend
We can reuse the same buffers on resume. v2: squash in S4 fix from Shikai Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2213 Reviewed-by: Christian König <christian.koenig@amd.com> Tested-by: Guilherme G. Piccoli <gpiccoli@igalia.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
@@ -198,6 +198,7 @@ void psp_ta_free_shared_buf(struct ta_mem_context *mem_ctx)
|
||||
{
|
||||
amdgpu_bo_free_kernel(&mem_ctx->shared_bo, &mem_ctx->shared_mc_addr,
|
||||
&mem_ctx->shared_buf);
|
||||
mem_ctx->shared_bo = NULL;
|
||||
}
|
||||
|
||||
static void psp_free_shared_bufs(struct psp_context *psp)
|
||||
@@ -208,6 +209,7 @@ static void psp_free_shared_bufs(struct psp_context *psp)
|
||||
/* free TMR memory buffer */
|
||||
pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL;
|
||||
amdgpu_bo_free_kernel(&psp->tmr_bo, &psp->tmr_mc_addr, pptr);
|
||||
psp->tmr_bo = NULL;
|
||||
|
||||
/* free xgmi shared memory */
|
||||
psp_ta_free_shared_buf(&psp->xgmi_context.context.mem_context);
|
||||
@@ -769,7 +771,7 @@ static int psp_load_toc(struct psp_context *psp,
|
||||
/* Set up Trusted Memory Region */
|
||||
static int psp_tmr_init(struct psp_context *psp)
|
||||
{
|
||||
int ret;
|
||||
int ret = 0;
|
||||
int tmr_size;
|
||||
void *tmr_buf;
|
||||
void **pptr;
|
||||
@@ -796,10 +798,12 @@ static int psp_tmr_init(struct psp_context *psp)
|
||||
}
|
||||
}
|
||||
|
||||
pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL;
|
||||
ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_ALIGNMENT,
|
||||
AMDGPU_GEM_DOMAIN_VRAM,
|
||||
&psp->tmr_bo, &psp->tmr_mc_addr, pptr);
|
||||
if (!psp->tmr_bo) {
|
||||
pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL;
|
||||
ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_ALIGNMENT,
|
||||
AMDGPU_GEM_DOMAIN_VRAM,
|
||||
&psp->tmr_bo, &psp->tmr_mc_addr, pptr);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2727,8 +2731,6 @@ static int psp_suspend(void *handle)
|
||||
}
|
||||
|
||||
out:
|
||||
psp_free_shared_bufs(psp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user