This series adds support for the True Random Number Generator (TRNG) in the AMD/Xilinx Versal family of devices.
The series starts by introducing a non-cryptographic grade model of the TRNG controller in the Versal family of devices, followed by instantiating the model in Xilinx Versal machine. The series ends with a q-test for sanity check of the TRNG model in the Xilinx Versal machine. V3 => V4 1) Patch #1 a) Simplify the data given to g_rand_set_seed_array() as an array of guint32. b) Use qemu_guest_getrandom_nofail() as the entropy source when the device is configured in TRNG (mode 3). c) Allow 0 and (2^32-1) as valid output of the generator d) Add output-related context to VMSTATE. 2) Patch #3 Remove test's assumption of PRNG output != TRNG output. V2 => V3 1) Patch #1 Use DEFINE_PROP to define a property with custom action on set 2) Patch #1 Remove duplicated version-check on writing to CTRL4 register 3) Patch #2 Defer adding TRNG to machine's device-tree to a future patch 4) Patch #3 Code style fix: group all local vars definitions together V1 => V2 1) Change patch #1 only 2) Use g_rand_*() PRNG from glib to replace V1's custom PRNG. 3) Implement ResettableClass for device-reset. 4) Add device-mode description to commit-message. Best regards, Tong Ho Tong Ho (3): hw/misc: Introduce AMD/Xilix Versal TRNG device hw/arm: xlnx-versal-virt: Add AMD/Xilinx TRNG device tests/qtest: Introduce tests for AMD/Xilinx Versal TRNG device hw/arm/Kconfig | 1 + hw/arm/xlnx-versal.c | 16 + hw/misc/Kconfig | 3 + hw/misc/meson.build | 3 + hw/misc/xlnx-versal-trng.c | 727 ++++++++++++++++++++++++++++ include/hw/arm/xlnx-versal.h | 5 + include/hw/misc/xlnx-versal-trng.h | 58 +++ tests/qtest/meson.build | 2 +- tests/qtest/xlnx-versal-trng-test.c | 486 +++++++++++++++++++ 9 files changed, 1300 insertions(+), 1 deletion(-) create mode 100644 hw/misc/xlnx-versal-trng.c create mode 100644 include/hw/misc/xlnx-versal-trng.h create mode 100644 tests/qtest/xlnx-versal-trng-test.c -- 2.25.1