[PATCH 1/2] powerpc/tpm: Create linux,sml-base/size as big endian
Stefan Berger
stefanb at linux.ibm.com
Tue Feb 28 10:08:31 AEDT 2023
On 2/23/23 22:25, Michael Ellerman wrote:
> There's code in prom_instantiate_sml() to do a "SML handover" (Stored
> Measurement Log) from OF to Linux, before Linux shuts down Open
> Firmware.
>
> This involves creating a buffer to hold the SML, and creating two device
> tree properties to record its base address and size. The kernel then
> later reads those properties from the device tree to find the SML.
>
> When the code was initially added in commit 4a727429abec ("PPC64: Add
> support for instantiating SML from Open Firmware") the powerpc kernel
> was always built big endian, so the properties were created big endian
> by default.
>
> However since then little endian support was added to powerpc, and now
> the code lacks conversions to big endian when creating the properties.
>
> This means on little endian kernels the device tree properties are
> little endian, which is contrary to the device tree spec, and in
> contrast to all other device tree properties.
>
> To cope with that a workaround was added in tpm_read_log_of() to skip
> the endian conversion if the properties were created via the SML
> handover.
>
> A better solution is to encode the properties as big endian as they
> should be, and remove the workaround.
>
> Typically changing the encoding of a property like this would present
> problems for kexec. However the SML is not propagated across kexec, so
> changing the encoding of the properties is a non-issue.
>
> Fixes: e46e22f12b19 ("tpm: enhance read_log_of() to support Physical TPM event log")
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
Reviewed-by: Stefan Berger <stefanb at linux.ibm.com>
More information about the Linuxppc-dev
mailing list