> -----Original Message----- > From: Hawking Zhang <Hawking.Zhang@xxxxxxx> > Sent: Monday, December 2, 2019 1:04 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Min, Frank <Frank.Min@xxxxxxx>; > Clements, John <John.Clements@xxxxxxx>; Deucher, Alexander > <Alexander.Deucher@xxxxxxx> > Cc: Zhang, Hawking <Hawking.Zhang@xxxxxxx> > Subject: [PATCH 2/3] drm/amdgpu: unload asd in psp hw de-init phase > > issue unload_ta_cmd to tOS to unload asd driver > > Change-Id: I697cfc1774205ed6cbe22eb3c16143b603543564 > Signed-off-by: Hawking Zhang <Hawking.Zhang@xxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 36 > +++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > index bdc9e7ae4892..0e8907179e07 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > @@ -356,6 +356,40 @@ static int psp_asd_load(struct psp_context *psp) > return ret; > } > > +static void psp_prep_asd_unload_cmd_buf(struct psp_gfx_cmd_resp > *cmd, > + uint32_t asd_session_id) > +{ > + cmd->cmd_id = GFX_CMD_ID_UNLOAD_TA; > + cmd->cmd.cmd_unload_ta.session_id = asd_session_id; } > + > +static int psp_asd_unload(struct psp_context *psp) { > + int ret; > + struct psp_gfx_cmd_resp *cmd; > + > + if (amdgpu_sriov_vf(psp->adev)) > + return 0; > + > + if (!psp->asd_context.asd_initialized) > + return 0; > + > + cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL); > + if (!cmd) > + return -ENOMEM; > + > + psp_prep_asd_unload_cmd_buf(cmd, psp- > >asd_context.session_id); > + > + ret = psp_cmd_submit_buf(psp, NULL, cmd, > + psp->fence_buf_mc_addr); > + if (!ret) > + psp->asd_context.asd_initialized = false; > + > + kfree(cmd); > + > + return ret; > +} > + > static void psp_prep_reg_prog_cmd_buf(struct psp_gfx_cmd_resp *cmd, > uint32_t id, uint32_t value) > { > @@ -1583,6 +1617,8 @@ static int psp_hw_fini(void *handle) > psp_hdcp_terminate(psp); > } > > + psp_asd_unload(psp); > + > psp_ring_destroy(psp, PSP_RING_TYPE__KM); > > pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL; > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx