diff options
author | Peter Maydell | 2018-01-19 17:35:25 +0100 |
---|---|---|
committer | Peter Maydell | 2018-01-19 17:35:25 +0100 |
commit | b384cd95eb9c6f73ad84ed1bb0717a26e29cc78f (patch) | |
tree | bbd0e7a39efd262c9196edea6d75a88d47557d8a /hw/ppc | |
parent | Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (diff) | |
parent | fw_cfg: fix memory corruption when all fw_cfg slots are used (diff) | |
download | qemu-b384cd95eb9c6f73ad84ed1bb0717a26e29cc78f.tar.gz qemu-b384cd95eb9c6f73ad84ed1bb0717a26e29cc78f.tar.xz qemu-b384cd95eb9c6f73ad84ed1bb0717a26e29cc78f.zip |
Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging
machine queue, 2018-01-19
# gpg: Signature made Fri 19 Jan 2018 16:30:19 GMT
# gpg: using RSA key 0x2807936F984DC5A6
# gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6
* remotes/ehabkost/tags/machine-next-pull-request:
fw_cfg: fix memory corruption when all fw_cfg slots are used
possible_cpus: add CPUArchId::type field
nvdimm: add 'unarmed' option
nvdimm: add a macro for property "label-size"
hostmem-file: add "align" option
scripts: Remove fixed entries from the device-crash-test
qdev: Check for the availability of a hotplug controller before adding a device
qdev_monitor: Simplify error handling in qdev_device_add()
q35: Allow only supported dynamic sysbus devices
xen: Add only xen-sysdev to dynamic sysbus device list
spapr: Allow only supported dynamic sysbus devices
ppc: e500: Allow only supported dynamic sysbus devices
hw/arm/virt: Allow only supported dynamic sysbus devices
machine: Replace has_dynamic_sysbus with list of allowed devices
numa: fix missing '-numa cpu' in '-help' output
qemu-options: document memory-backend-ram
qemu-options: document missing memory-backend-file options
memfd: remove needless include
memfd: split qemu_memfd_alloc()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/ppc')
-rw-r--r-- | hw/ppc/e500plat.c | 4 | ||||
-rw-r--r-- | hw/ppc/spapr.c | 15 |
2 files changed, 12 insertions, 7 deletions
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c index e59e80fb9e..81d03e1038 100644 --- a/hw/ppc/e500plat.c +++ b/hw/ppc/e500plat.c @@ -12,9 +12,11 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "e500.h" +#include "hw/net/fsl_etsec/etsec.h" #include "hw/boards.h" #include "sysemu/device_tree.h" #include "sysemu/kvm.h" +#include "hw/sysbus.h" #include "hw/pci/pci.h" #include "hw/ppc/openpic.h" #include "kvm_ppc.h" @@ -63,7 +65,7 @@ static void e500plat_machine_init(MachineClass *mc) mc->desc = "generic paravirt e500 platform"; mc->init = e500plat_init; mc->max_cpus = 32; - mc->has_dynamic_sysbus = true; + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_ETSEC_COMMON); mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30"); } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 499ab647d8..a781dd22e7 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2226,11 +2226,6 @@ static void spapr_init_cpus(sPAPRMachineState *spapr) int boot_cores_nr = smp_cpus / smp_threads; int i; - if (!type) { - error_report("Unable to find sPAPR CPU Core definition"); - exit(1); - } - possible_cpus = mc->possible_cpu_arch_ids(machine); if (mc->has_hotpluggable_cpus) { if (smp_cpus % smp_threads) { @@ -3545,6 +3540,7 @@ static int64_t spapr_get_default_cpu_node_id(const MachineState *ms, int idx) static const CPUArchIdList *spapr_possible_cpu_arch_ids(MachineState *machine) { int i; + const char *core_type; int spapr_max_cores = max_cpus / smp_threads; MachineClass *mc = MACHINE_GET_CLASS(machine); @@ -3556,12 +3552,19 @@ static const CPUArchIdList *spapr_possible_cpu_arch_ids(MachineState *machine) return machine->possible_cpus; } + core_type = spapr_get_cpu_core_type(machine->cpu_type); + if (!core_type) { + error_report("Unable to find sPAPR CPU Core definition"); + exit(1); + } + machine->possible_cpus = g_malloc0(sizeof(CPUArchIdList) + sizeof(CPUArchId) * spapr_max_cores); machine->possible_cpus->len = spapr_max_cores; for (i = 0; i < machine->possible_cpus->len; i++) { int core_id = i * smp_threads; + machine->possible_cpus->cpus[i].type = core_type; machine->possible_cpus->cpus[i].vcpus_count = smp_threads; machine->possible_cpus->cpus[i].arch_id = core_id; machine->possible_cpus->cpus[i].props.has_core_id = true; @@ -3843,7 +3846,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) mc->default_boot_order = ""; mc->default_ram_size = 512 * M_BYTE; mc->kvm_type = spapr_kvm_type; - mc->has_dynamic_sysbus = true; + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SPAPR_PCI_HOST_BRIDGE); mc->pci_allow_0_address = true; mc->get_hotplug_handler = spapr_get_hotplug_handler; hc->pre_plug = spapr_machine_device_pre_plug; |