KVM: arm64: Implement the TRNG hypervisor call
authorArd Biesheuvel <ardb@kernel.org>
Wed, 6 Jan 2021 10:34:53 +0000 (10:34 +0000)
committerMarc Zyngier <maz@kernel.org>
Mon, 25 Jan 2021 22:19:31 +0000 (22:19 +0000)
commita8e190cdae1bf8e9e490776b8179babc1962bb25
treee98b87e0f127a6ab0e1f2c2230aae17a8bef7cfc
parent67c6bb56b649590a3f59c2a92331aa4e83d4534c
KVM: arm64: Implement the TRNG hypervisor call

Provide a hypervisor implementation of the ARM architected TRNG firmware
interface described in ARM spec DEN0098. All function IDs are implemented,
including both 32-bit and 64-bit versions of the TRNG_RND service, which
is the centerpiece of the API.

The API is backed by the kernel's entropy pool only, to avoid guests
draining more precious direct entropy sources.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
[Andre: minor fixes, drop arch_get_random() usage]
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210106103453.152275-6-andre.przywara@arm.com
arch/arm64/include/asm/kvm_host.h
arch/arm64/kvm/Makefile
arch/arm64/kvm/hypercalls.c
arch/arm64/kvm/trng.c [new file with mode: 0644]