Hello Dominik, On Mon, 28 Oct 2019 at 08:30, Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx> wrote: > > Ard, Mario, > > in theory, invoking EFI_RNG_PROTOCOL on a Dell Inc. Latitude 7390/09386V, > BIOS 1.9.2 04/03/2019, should work fine as the system provides EFI v2.60. > Using my patch from a few weeks ago[1], efi_random_get_seed() is called from > arch/x86/boot/compressed/eboot.c::efi_main(). In efi_random_get_seed(), the > calls to > > status = efi_call_early(locate_protocol, &rng_proto, NULL, > (void **)&rng); > > and > > status = efi_call_early(allocate_pool, EFI_RUNTIME_SERVICES_DATA, > sizeof(*seed) + EFI_RANDOM_SEED_SIZE, > (void **)&seed); > > succeed. However, > > status = rng->get_rng(rng, &rng_algo_raw, EFI_RANDOM_SEED_SIZE, > seed->bits); > > returns EFI_INVALID_PARAMETER, though I can't see why one of these > parameters is invalid. The UEFI spec defines the conditions under which this function may return EFI_INVALID_PARAMETER as """ RNGValue is null or RNGValueLength is zero. """ > When trying to use the default rng algorithm (by > modifying the test to "(status != EFI_SUCCESS)"), > > status = rng->get_rng(rng, NULL, EFI_RANDOM_SEED_SIZE, > seed->bits); > > the call doesn't seem to return. > > Any ideas? > Try running this from the UEFI shell: http://people.linaro.org/~ard.biesheuvel/RngTest-X64.efi