mbox series

[0/4] random/arm64: enable RANDOM_TRUST_CPU for arm64

Message ID 20200210130015.17664-1-mark.rutland@arm.com (mailing list archive)
Headers show
Series random/arm64: enable RANDOM_TRUST_CPU for arm64 | expand

Message

Mark Rutland Feb. 10, 2020, 1 p.m. UTC
On arm64 systems some CPUs may have RNG instructions while others do
not, and consequently we cannot generally enable the use of RNG
instructions until all CPUs have been booted (as otherwise we'd have
problems with preemption, etc). This prevents us from seeding the
primary CRNG using the RNG, as this occurs before secondary CPUs are
onlined.

These patches rework the core CRNG intialization code so that the arch
code can (optionally) distinguish boot-time usage from runtime usage of
the arch_get_random_*() functions. This allows arm64 to use the boot
CPU's RNG to seed the primary CRNG, regardless of whether secondary CPUs
support the RNG instructions. Other architectures should see no
functional change as a result of this patches.

Thanks,
Mark.

Mark Rutland (3):
  random: split primary/secondary crng init paths
  random: add arch_get_random_*long_early()
  arm64: add credited/trusted RNG support

Richard Henderson (1):
  random: Make RANDOM_TRUST_CPU depend on ARCH_RANDOM

 arch/arm64/include/asm/archrandom.h | 14 ++++++++++
 drivers/char/Kconfig                |  2 +-
 drivers/char/random.c               | 52 ++++++++++++++++++++++++++++---------
 include/linux/random.h              | 22 ++++++++++++++++
 4 files changed, 77 insertions(+), 13 deletions(-)

Comments

Mark Rutland Feb. 26, 2020, 10:24 a.m. UTC | #1
Ted, sorry to ping, but do you have any thoughts on this series?

I'm happy to rework this, or drop it if you think it's completely wrong,
but if you're not too concerned it would be nice to be able to queue
this soon.

Thanks,
Mark.

On Mon, Feb 10, 2020 at 01:00:11PM +0000, Mark Rutland wrote:
> On arm64 systems some CPUs may have RNG instructions while others do
> not, and consequently we cannot generally enable the use of RNG
> instructions until all CPUs have been booted (as otherwise we'd have
> problems with preemption, etc). This prevents us from seeding the
> primary CRNG using the RNG, as this occurs before secondary CPUs are
> onlined.
> 
> These patches rework the core CRNG intialization code so that the arch
> code can (optionally) distinguish boot-time usage from runtime usage of
> the arch_get_random_*() functions. This allows arm64 to use the boot
> CPU's RNG to seed the primary CRNG, regardless of whether secondary CPUs
> support the RNG instructions. Other architectures should see no
> functional change as a result of this patches.
> 
> Thanks,
> Mark.
> 
> Mark Rutland (3):
>   random: split primary/secondary crng init paths
>   random: add arch_get_random_*long_early()
>   arm64: add credited/trusted RNG support
> 
> Richard Henderson (1):
>   random: Make RANDOM_TRUST_CPU depend on ARCH_RANDOM
> 
>  arch/arm64/include/asm/archrandom.h | 14 ++++++++++
>  drivers/char/Kconfig                |  2 +-
>  drivers/char/random.c               | 52 ++++++++++++++++++++++++++++---------
>  include/linux/random.h              | 22 ++++++++++++++++
>  4 files changed, 77 insertions(+), 13 deletions(-)
> 
> -- 
> 2.11.0
>
Theodore Ts'o Feb. 28, 2020, 4:22 a.m. UTC | #2
On Wed, Feb 26, 2020 at 10:24:22AM +0000, Mark Rutland wrote:
> Ted, sorry to ping, but do you have any thoughts on this series?
> 
> I'm happy to rework this, or drop it if you think it's completely wrong,
> but if you're not too concerned it would be nice to be able to queue
> this soon.

Thanks, I've applied it to the random git tree.

						- Ted