[PATCH v2] arm64: zynqmp: Enable rng-seed generation
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Jul 2 08:38:16 CEST 2025
Hi Michal
On Wed, 2 Jul 2025 at 09:34, Michal Simek <michal.simek at amd.com> wrote:
>
> SOM has TPM with RNG in it that's why enable rng-seed generation.
>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
>
> Changes in v2:
> - Free alloc area in case of error
>
> board/xilinx/common/board.c | 34 +++++++++++++++++++++++++++-
> configs/xilinx_zynqmp_kria_defconfig | 1 +
> 2 files changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
> index 8ffe74299016..f258675d7772 100644
> --- a/board/xilinx/common/board.c
> +++ b/board/xilinx/common/board.c
> @@ -1,7 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> * (C) Copyright 2014 - 2022, Xilinx, Inc.
> - * (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
> + * (C) Copyright 2022 - 2025, Advanced Micro Devices, Inc.
> *
> * Michal Simek <michal.simek at amd.com>
> */
> @@ -712,3 +712,35 @@ phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
> }
>
> #endif
> +
> +#if IS_ENABLED(CONFIG_BOARD_RNG_SEED)
> +/* Use hardware rng to seed Linux random. */
> +__weak int board_rng_seed(struct abuf *buf)
> +{
> + struct udevice *dev;
> + ulong len = 64;
> + u64 *data;
> +
> + data = malloc(len);
> + if (!data) {
> + printf("Out of memory\n");
> + return -ENOMEM;
> + }
Why don't you move the allocation just before abuf expects it?
You can get rid of the free() in case of failures
Thanks
/Ilias
> +
> + if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
> + printf("No RNG device\n");
> + free(data);
> + return -ENODEV;
> + }
> +
> + if (dm_rng_read(dev, data, len)) {
> + printf("Reading RNG failed\n");
> + free(data);
> + return -EIO;
> + }
> +
> + abuf_init_set(buf, data, len);
> +
> + return 0;
> +}
> +#endif
> diff --git a/configs/xilinx_zynqmp_kria_defconfig b/configs/xilinx_zynqmp_kria_defconfig
> index 22ba8a7cc158..3e2ac6144050 100644
> --- a/configs/xilinx_zynqmp_kria_defconfig
> +++ b/configs/xilinx_zynqmp_kria_defconfig
> @@ -46,6 +46,7 @@ CONFIG_USE_PREBOOT=y
> CONFIG_SYS_PBSIZE=2073
> CONFIG_BOARD_EARLY_INIT_R=y
> CONFIG_CLOCKS=y
> +CONFIG_BOARD_RNG_SEED=y
> CONFIG_SPL_MAX_SIZE=0x40000
> # CONFIG_SPL_BINMAN_SYMBOLS is not set
> # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
> --
> 2.43.0
>
> base-commit: ebd8a8ae95f6dc8548139aafb975da553af3bd04
> branch: debian-sent3
More information about the U-Boot
mailing list