cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rng.c (714B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 * Copyright 2013, Michael Ellerman, IBM Corporation.
      4 */
      5
      6#define pr_fmt(fmt)	"pseries-rng: " fmt
      7
      8#include <linux/kernel.h>
      9#include <linux/of.h>
     10#include <asm/archrandom.h>
     11#include <asm/machdep.h>
     12#include <asm/plpar_wrappers.h>
     13#include "pseries.h"
     14
     15
     16static int pseries_get_random_long(unsigned long *v)
     17{
     18	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
     19
     20	if (plpar_hcall(H_RANDOM, retbuf) == H_SUCCESS) {
     21		*v = retbuf[0];
     22		return 1;
     23	}
     24
     25	return 0;
     26}
     27
     28void __init pseries_rng_init(void)
     29{
     30	struct device_node *dn;
     31
     32	dn = of_find_compatible_node(NULL, NULL, "ibm,random");
     33	if (!dn)
     34		return;
     35	ppc_md.get_random_seed = pseries_get_random_long;
     36	of_node_put(dn);
     37}