Re: [PATCH v5 4/6] tpm: of: Make of-tree specific function commonly available
From: Jarkko Sakkinen <jarkko@kernel.org>
Date: 2022-07-28 07:40:42
Also in:
kexec, linux-devicetree, linux-integrity, lkml
On Fri, Jul 15, 2022 at 12:01:36PM -0400, Stefan Berger wrote:
On 7/10/22 23:04, Jarkko Sakkinen wrote:quoted
On Wed, Jul 06, 2022 at 11:23:27AM -0400, Stefan Berger wrote:quoted
Simplify tpm_read_log_of() by moving reusable parts of the code into an inline function that makes it commonly available so it can be used also for kexec support. Call the new of_tpm_get_sml_parameters() function from the TPM Open Firmware driver. Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> Cc: Jarkko Sakkinen <jarkko@kernel.org> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <redacted> --- v4: - converted to inline function --- drivers/char/tpm/eventlog/of.c | 31 +++++-------------------------- include/linux/tpm.h | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-)diff --git a/drivers/char/tpm/eventlog/of.c b/drivers/char/tpm/eventlog/of.c index a9ce66d09a75..f9462d19632e 100644 --- a/drivers/char/tpm/eventlog/of.c +++ b/drivers/char/tpm/eventlog/of.c@@ -12,6 +12,7 @@ #include <linux/slab.h> #include <linux/of.h> +#include <linux/tpm.h> #include <linux/tpm_eventlog.h> #include "../tpm.h"@@ -20,11 +21,10 @@ int tpm_read_log_of(struct tpm_chip *chip) { struct device_node *np; - const u32 *sizep; - const u64 *basep; struct tpm_bios_log *log; u32 size; u64 base; + int ret; log = &chip->log; if (chip->dev.parent && chip->dev.parent->of_node)@@ -35,30 +35,9 @@ int tpm_read_log_of(struct tpm_chip *chip) if (of_property_read_bool(np, "powered-while-suspended")) chip->flags |= TPM_CHIP_FLAG_ALWAYS_POWERED; - sizep = of_get_property(np, "linux,sml-size", NULL); - basep = of_get_property(np, "linux,sml-base", NULL); - if (sizep == NULL && basep == NULL) - return -ENODEV; - if (sizep == NULL || basep == NULL) - return -EIO; - - /* - * For both vtpm/tpm, firmware has log addr and log size in big - * endian format. But in case of vtpm, there is a method called - * sml-handover which is run during kernel init even before - * device tree is setup. This sml-handover function takes care - * of endianness and writes to sml-base and sml-size in little - * endian format. For this reason, vtpm doesn't need conversion - * but physical tpm needs the conversion. - */Jarkko, can I apply your R-b tag after putting this lost comment back into the inline function? Stefan
If there's a change I want to see the updated patch first. BR, Jarkko