]> git.proxmox.com Git - mirror_qemu.git/blobdiff - hw/ppc/spapr_rng.c
i386: Add x-force-features option for testing
[mirror_qemu.git] / hw / ppc / spapr_rng.c
index 02d6be49f58ecbf480f1d3337e044d83647caf04..0e1c7ebcf8960304c104d07d7d125469e4bdaf6c 100644 (file)
  */
 
 #include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "cpu.h"
 #include "qemu/error-report.h"
+#include "qemu/module.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/device_tree.h"
 #include "sysemu/rng.h"
 #include "kvm_ppc.h"
 
 #define SPAPR_RNG(obj) \
-    OBJECT_CHECK(sPAPRRngState, (obj), TYPE_SPAPR_RNG)
+    OBJECT_CHECK(SpaprRngState, (obj), TYPE_SPAPR_RNG)
 
-struct sPAPRRngState {
+struct SpaprRngState {
     /*< private >*/
     DeviceState ds;
     RngBackend *backend;
     bool use_kvm;
 };
-typedef struct sPAPRRngState sPAPRRngState;
+typedef struct SpaprRngState SpaprRngState;
 
 struct HRandomData {
     QemuSemaphore sem;
@@ -61,10 +64,10 @@ static void random_recv(void *dest, const void *src, size_t size)
 }
 
 /* Handler for the H_RANDOM hypercall */
-static target_ulong h_random(PowerPCCPU *cpu, sPAPRMachineState *spapr,
+static target_ulong h_random(PowerPCCPU *cpu, SpaprMachineState *spapr,
                              target_ulong opcode, target_ulong *args)
 {
-    sPAPRRngState *rngstate;
+    SpaprRngState *rngstate;
     HRandomData hrdata;
 
     rngstate = SPAPR_RNG(object_resolve_path_type("", TYPE_SPAPR_RNG, NULL));
@@ -93,17 +96,11 @@ static target_ulong h_random(PowerPCCPU *cpu, sPAPRMachineState *spapr,
 
 static void spapr_rng_instance_init(Object *obj)
 {
-    sPAPRRngState *rngstate = SPAPR_RNG(obj);
-
     if (object_resolve_path_type("", TYPE_SPAPR_RNG, NULL) != NULL) {
         error_report("spapr-rng can not be instantiated twice!");
         return;
     }
 
-    object_property_add_link(obj, "rng", TYPE_RNG_BACKEND,
-                             (Object **)&rngstate->backend,
-                             object_property_allow_set_link,
-                             OBJ_PROP_LINK_UNREF_ON_RELEASE, NULL);
     object_property_set_description(obj, "rng",
                                     "ID of the random number generator backend",
                                     NULL);
@@ -112,7 +109,7 @@ static void spapr_rng_instance_init(Object *obj)
 static void spapr_rng_realize(DeviceState *dev, Error **errp)
 {
 
-    sPAPRRngState *rngstate = SPAPR_RNG(dev);
+    SpaprRngState *rngstate = SPAPR_RNG(dev);
 
     if (rngstate->use_kvm) {
         if (kvmppc_enable_hwrng() == 0) {
@@ -135,31 +132,10 @@ static void spapr_rng_realize(DeviceState *dev, Error **errp)
     }
 }
 
-int spapr_rng_populate_dt(void *fdt)
-{
-    int node;
-    int ret;
-
-    node = qemu_fdt_add_subnode(fdt, "/ibm,platform-facilities");
-    if (node <= 0) {
-        return -1;
-    }
-    ret = fdt_setprop_string(fdt, node, "device_type",
-                             "ibm,platform-facilities");
-    ret |= fdt_setprop_cell(fdt, node, "#address-cells", 0x1);
-    ret |= fdt_setprop_cell(fdt, node, "#size-cells", 0x0);
-
-    node = fdt_add_subnode(fdt, node, "ibm,random-v1");
-    if (node <= 0) {
-        return -1;
-    }
-    ret |= fdt_setprop_string(fdt, node, "compatible", "ibm,random");
-
-    return ret ? -1 : 0;
-}
-
 static Property spapr_rng_properties[] = {
-    DEFINE_PROP_BOOL("use-kvm", sPAPRRngState, use_kvm, false),
+    DEFINE_PROP_BOOL("use-kvm", SpaprRngState, use_kvm, false),
+    DEFINE_PROP_LINK("rng", SpaprRngState, backend, TYPE_RNG_BACKEND,
+                     RngBackend *),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -176,7 +152,7 @@ static void spapr_rng_class_init(ObjectClass *oc, void *data)
 static const TypeInfo spapr_rng_info = {
     .name          = TYPE_SPAPR_RNG,
     .parent        = TYPE_DEVICE,
-    .instance_size = sizeof(sPAPRRngState),
+    .instance_size = sizeof(SpaprRngState),
     .instance_init = spapr_rng_instance_init,
     .class_init    = spapr_rng_class_init,
 };