hw/ppc/spapr_rng: Introduce CONFIG_SPAPR_RNG switch for spapr_rng.c
The spapr-rng device is suboptimal when compared to virtio-rng, so users might want to disable it in their builds. Thus let's introduce a proper CONFIG switch to allow us to compile QEMU without this device. The function spapr_rng_populate_dt is required for linking, so move it to a different location. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
73785b329e
commit
0e947a89ce
@ -18,3 +18,4 @@ CONFIG_XICS_SPAPR=$(CONFIG_PSERIES)
|
||||
CONFIG_XICS_KVM=$(call land,$(CONFIG_PSERIES),$(CONFIG_KVM))
|
||||
CONFIG_MEM_DEVICE=y
|
||||
CONFIG_DIMM=y
|
||||
CONFIG_SPAPR_RNG=y
|
||||
|
@ -3,8 +3,9 @@ obj-y += ppc.o ppc_booke.o fdt.o
|
||||
# IBM pSeries (sPAPR)
|
||||
obj-$(CONFIG_PSERIES) += spapr.o spapr_caps.o spapr_vio.o spapr_events.o
|
||||
obj-$(CONFIG_PSERIES) += spapr_hcall.o spapr_iommu.o spapr_rtas.o
|
||||
obj-$(CONFIG_PSERIES) += spapr_pci.o spapr_rtc.o spapr_drc.o spapr_rng.o
|
||||
obj-$(CONFIG_PSERIES) += spapr_pci.o spapr_rtc.o spapr_drc.o
|
||||
obj-$(CONFIG_PSERIES) += spapr_cpu_core.o spapr_ovec.o spapr_irq.o
|
||||
obj-$(CONFIG_SPAPR_RNG) += spapr_rng.o
|
||||
# IBM PowerNV
|
||||
obj-$(CONFIG_POWERNV) += pnv.o pnv_xscom.o pnv_core.o pnv_lpc.o pnv_psi.o pnv_occ.o pnv_bmc.o
|
||||
ifeq ($(CONFIG_PCI)$(CONFIG_PSERIES)$(CONFIG_LINUX), yyy)
|
||||
|
@ -610,6 +610,29 @@ static void spapr_populate_cpus_dt_node(void *fdt, sPAPRMachineState *spapr)
|
||||
g_free(rev);
|
||||
}
|
||||
|
||||
static 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 uint32_t spapr_pc_dimm_node(MemoryDeviceInfoList *list, ram_addr_t addr)
|
||||
{
|
||||
MemoryDeviceInfoList *info;
|
||||
|
@ -132,29 +132,6 @@ 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_LINK("rng", sPAPRRngState, backend, TYPE_RNG_BACKEND,
|
||||
|
@ -745,8 +745,6 @@ int spapr_rtc_import_offset(sPAPRRTCState *rtc, int64_t legacy_offset);
|
||||
|
||||
#define TYPE_SPAPR_RNG "spapr-rng"
|
||||
|
||||
int spapr_rng_populate_dt(void *fdt);
|
||||
|
||||
#define SPAPR_MEMORY_BLOCK_SIZE (1 << 28) /* 256MB */
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user