From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Simon Glass <sjg@chromium.org>
Cc: U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH v2] tpm: Allow committing non-volatile data
Date: Tue, 21 Feb 2023 15:58:38 +0200 [thread overview]
Message-ID: <Y/TODuRYJXJrNmj4@hera> (raw)
In-Reply-To: <20230220163124.299996-1-sjg@chromium.org>
Hi Simon,
On Mon, Feb 20, 2023 at 09:31:24AM -0700, Simon Glass wrote:
> Add an option to tell the TPM to commit non-volatile data immediately it
> is changed, rather than waiting until later. This is needed in some
> situations, since if the device reboots it may not write the data.
>
> Add definitions for the rest of the Cr50 commands while we are here.
This defines a function that's unused. IIRC you said U-Boot doesn't use it,
but some code that run for that laptop does right?
In any case the function declaration doesn't belong to the TPMv2 library.
I think we are better off adding it to the cr50 driver itself. I also
assume you compile u-boot in a 'special' way so the linker doesn't get rid
of the emitted code? Does t hat mean we can define it as __unused as well?
Thanks
/Ilias
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> I am resending this as I think it got lost.
>
> Changes in v2:
> - Rebase to master
>
> include/tpm-v2.h | 14 ++++++++++++++
> lib/tpm-v2.c | 20 ++++++++++++++++++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/include/tpm-v2.h b/include/tpm-v2.h
> index 8e90a616220..0a03994740d 100644
> --- a/include/tpm-v2.h
> +++ b/include/tpm-v2.h
> @@ -712,4 +712,18 @@ u32 tpm2_submit_command(struct udevice *dev, const u8 *sendbuf,
> */
> u32 tpm2_cr50_report_state(struct udevice *dev, u8 *recvbuf, size_t *recv_size);
>
> +/*
> + * tpm2_cr50_enable_nvcommits() - Tell Cr50 to commit NV data immediately
> + *
> + * For Chromium OS verified boot, we may reboot or reset at different times,
> + * possibly leaving non-volatile data unwritten by the TPM.
> + *
> + * This vendor command is used to indicate that non-volatile data should be
> + * written to its store immediately.
> + *
> + * @dev TPM device
> + * Return: result of the operation
> + */
> +u32 tpm2_cr50_enable_nvcommits(struct udevice *dev);
> +
> #endif /* __TPM_V2_H */
> diff --git a/lib/tpm-v2.c b/lib/tpm-v2.c
> index bdf019b0f93..5fcd3649b74 100644
> --- a/lib/tpm-v2.c
> +++ b/lib/tpm-v2.c
> @@ -699,3 +699,23 @@ u32 tpm2_cr50_report_state(struct udevice *dev, u8 *recvbuf, size_t *recv_size)
>
> return 0;
> }
> +
> +u32 tpm2_cr50_enable_nvcommits(struct udevice *dev)
> +{
> + u8 command_v2[COMMAND_BUFFER_SIZE] = {
> + /* header 10 bytes */
> + tpm_u16(TPM2_ST_NO_SESSIONS), /* TAG */
> + tpm_u32(10 + 2), /* Length */
> + tpm_u32(TPM2_CR50_VENDOR_COMMAND), /* Command code */
> +
> + tpm_u16(TPM2_CR50_SUB_CMD_NVMEM_ENABLE_COMMITS),
> + };
> + int ret;
> +
> + ret = tpm_sendrecv_command(dev, command_v2, NULL, NULL);
> + log_debug("ret=%s, %x\n", dev->name, ret);
> + if (ret)
> + return ret;
> +
> + return 0;
> +}
> --
> 2.39.2.637.g21b0678d19-goog
>
next prev parent reply other threads:[~2023-02-21 13:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-20 16:31 [PATCH v2] tpm: Allow committing non-volatile data Simon Glass
2023-02-21 13:58 ` Ilias Apalodimas [this message]
2023-02-21 14:09 ` Simon Glass
2023-02-21 14:18 ` Ilias Apalodimas
2023-02-21 14:33 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y/TODuRYJXJrNmj4@hera \
--to=ilias.apalodimas@linaro.org \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.