mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
powerpc: Implement arch_get_random_long/int() for powernv
Add the plumbing to implement arch_get_random_long/int(). It didn't seem worth adding an extra ppc_md hook for int, so we reuse the one for long. Add an implementation for powernv based on the hwrng found in power7+ systems. We whiten the output of the hwrng, and the result passes all the dieharder tests. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
f95dabef4c
commit
a4da0d50b2
6 changed files with 163 additions and 1 deletions
32
arch/powerpc/include/asm/archrandom.h
Normal file
32
arch/powerpc/include/asm/archrandom.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
#ifndef _ASM_POWERPC_ARCHRANDOM_H
|
||||
#define _ASM_POWERPC_ARCHRANDOM_H
|
||||
|
||||
#ifdef CONFIG_ARCH_RANDOM
|
||||
|
||||
#include <asm/machdep.h>
|
||||
|
||||
static inline int arch_get_random_long(unsigned long *v)
|
||||
{
|
||||
if (ppc_md.get_random_long)
|
||||
return ppc_md.get_random_long(v);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int arch_get_random_int(unsigned int *v)
|
||||
{
|
||||
unsigned long val;
|
||||
int rc;
|
||||
|
||||
rc = arch_get_random_long(&val);
|
||||
if (rc)
|
||||
*v = val;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int powernv_get_random_long(unsigned long *v);
|
||||
|
||||
#endif /* CONFIG_ARCH_RANDOM */
|
||||
|
||||
#endif /* _ASM_POWERPC_ARCHRANDOM_H */
|
Loading…
Add table
Add a link
Reference in a new issue