Merge tag 'tpm-next-27102023' of https://source.denx.de/u-boot/custodians/u-boot-tpm

bootX measurements and measurement API moved to u-boot core:

Up to now, U-Boot could perform measurements and EventLog
creation as described by the TCG spec when booting via EFI.

The EFI code was residing in lib/efi_loader/efi_tcg2.c and
contained both EFI specific code + the API needed to access
the TPM, extend PCRs and create an EventLog. The non-EFI part
proved modular enough and moving it around to the TPM
subsystem was straightforward.

With that in place we can have a common API for measuring
binaries regardless of the boot command, EFI or boot(m|i|z),
and contructing an EventLog.

I've tested all of the EFI cases -- booting with an empty
EventLog and booting with a previous stage loader providing one
and found no regressions.  Eddie tested the bootX part.

Eddie also fixed the sandbox TPM which couldn't be used for the
EFI code and it now supports all the required capabilities. This
had a slight sideeffect in our testing since the EFI subsystem
initializes the TPM early and 'tpm2 init' failed during some
python tests. That code only opens the device though, so we
can replace it with 'tpm2 autostart' which doesn't error out and
still allows you to perfom the rest of the tests but doesn't
report an error if the device is already opened.

There's a few minor issues with this PR as well but since testing
and verifying the changes takes a considerable amount of time,
I prefer merging it now.

Heinrich has already sent a PR for -master containing
"efi_loader: fix EFI_ENTRY point on get_active_pcr_banks" and
I am not sure if that will cause any conflicts, but in any case
they should be trivial to resolve.

Both the EFI and non-EFI code have a Kconfig for measuring the
loaded Device Tree.  The reason this is optional is that we
can't reason when/if devices add random info like kaslr-seed,
mac addresses etc in the DT. In that case measurements are
random, board specific and eventually useless.
The reason it was difficult to fix it prior to this patchset is
because the EFI subsystem and thus measurements was brought up
late and DT fixups might have already been applied. With this
patchset we can measure the DT really early in the future.

Heinrich also pointed out that the two Kconfigs for the DTB
measurements can be squashed in a single one and that the
documentation only explains the non-EFI case.  I agree on both
but as I said this is a sane working version, so let's pull this
first it's aleady big enough and painful to test.