On Fri, Oct 11, 2019 at 10:57:21AM -0400, Pavel Tatashin wrote: > From: thiruan <thiruan@xxxxxxxxxxxxx> > > add shutdown call back to close existing session with fTPM TA > to support kexec scenario. > > Signed-off-by: Thirupathaiah Annapureddy <thiruan@xxxxxxxxxxxxx> > Signed-off-by: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> Use the correct tag in the short summary (tpm/tpm_ftpm_tee). > --- > drivers/char/tpm/tpm_ftpm_tee.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/char/tpm/tpm_ftpm_tee.c b/drivers/char/tpm/tpm_ftpm_tee.c > index 6640a14dbe48..c245be6f4015 100644 > --- a/drivers/char/tpm/tpm_ftpm_tee.c > +++ b/drivers/char/tpm/tpm_ftpm_tee.c > @@ -328,6 +328,27 @@ static int ftpm_tee_remove(struct platform_device *pdev) > return 0; > } > > +/** > + * ftpm_tee_shutdown - shutdown the TPM device > + * @pdev: the platform_device description. > + * > + * Return: > + * none. Do not document return values for a void function. The last three lines do not serve any purpose. > + */ > +static void ftpm_tee_shutdown(struct platform_device *pdev) > +{ > + struct ftpm_tee_private *pvt_data = dev_get_drvdata(&pdev->dev); > + > + /* Free the shared memory pool */ > + tee_shm_free(pvt_data->shm); Is it unexpected that calling tee_shm_free() free's a shared memory pool? A comment here implies exactly that. > + /* close the existing session with fTPM TA*/ > + tee_client_close_session(pvt_data->ctx, pvt_data->session); Ditto. > + > + /* close the context with TEE driver */ > + tee_client_close_context(pvt_data->ctx); Ditto. > +} > + > static const struct of_device_id of_ftpm_tee_ids[] = { > { .compatible = "microsoft,ftpm" }, > { } > @@ -341,6 +362,7 @@ static struct platform_driver ftpm_tee_driver = { > }, > .probe = ftpm_tee_probe, > .remove = ftpm_tee_remove, > + .shutdown = ftpm_tee_shutdown, > }; > > module_platform_driver(ftpm_tee_driver); > -- > 2.23.0 > /Jarkko