diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2015-03-05 14:26:51 -0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2015-03-17 14:51:49 +0100 |
commit | e1570d0005f29f97d4b1d603b4548591340c57e1 (patch) | |
tree | 83a7306163db88b836f2edee47c7e52862addec6 /hw/i386 | |
parent | 7fe55c3cbac3ffcb1f772dfa8246405bd2328810 (diff) | |
download | qemu-e1570d0005f29f97d4b1d603b4548591340c57e1.zip |
target-i386: Remove icc_bridge parameter from cpu_x86_create()
Instead of passing icc_bridge from the PC initialization code to
cpu_x86_create(), make the PC initialization code attach the CPU to
icc_bridge.
The only difference here is that icc_bridge attachment will now be done
after x86_cpu_parse_featurestr() is called. But this shouldn't make any
difference, as property setters shouldn't depend on icc_bridge.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'hw/i386')
-rw-r--r-- | hw/i386/pc.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 642105f3f6..4b46c299c3 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -993,18 +993,26 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int level) static X86CPU *pc_new_cpu(const char *cpu_model, int64_t apic_id, DeviceState *icc_bridge, Error **errp) { - X86CPU *cpu; + X86CPU *cpu = NULL; Error *local_err = NULL; - cpu = cpu_x86_create(cpu_model, icc_bridge, &local_err); + if (icc_bridge == NULL) { + error_setg(&local_err, "Invalid icc-bridge value"); + goto out; + } + + cpu = cpu_x86_create(cpu_model, &local_err); if (local_err != NULL) { - error_propagate(errp, local_err); - return NULL; + goto out; } + qdev_set_parent_bus(DEVICE(cpu), qdev_get_child_bus(icc_bridge, "icc")); + object_unref(OBJECT(cpu)); + object_property_set_int(OBJECT(cpu), apic_id, "apic-id", &local_err); object_property_set_bool(OBJECT(cpu), true, "realized", &local_err); +out: if (local_err) { error_propagate(errp, local_err); object_unref(OBJECT(cpu)); |