[PATCH v3] arm64: zynqmp: Enable rng-seed generation

Ilias Apalodimas ilias.apalodimas at linaro.org
Wed Jul 2 12:18:10 CEST 2025


On Wed, 2 Jul 2025 at 10:44, 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>
> ---
>
Acked-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>

> Changes in v3:
> - Move malloc allocation before rng_read
>
> Changes in v2:
> - Free alloc area in case of error
>
>  board/xilinx/common/board.c          | 33 +++++++++++++++++++++++++++-
>  configs/xilinx_zynqmp_kria_defconfig |  1 +
>  2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
> index 8ffe74299016..ceb58da6d3cd 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,34 @@ 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;
> +
> +       if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
> +               printf("No RNG device\n");
> +               return -ENODEV;
> +       }
> +
> +       data = malloc(len);
> +       if (!data) {
> +               printf("Out of memory\n");
> +               return -ENOMEM;
> +       }
> +
> +       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: 506757335edcf5e74eac0e608f1835a8b0102c4b
> branch: debian-sent3


More information about the U-Boot mailing list