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/pc.c | |
| parent | 7fe55c3cbac3ffcb1f772dfa8246405bd2328810 (diff) | |
| download | focaccia-qemu-e1570d0005f29f97d4b1d603b4548591340c57e1.tar.gz focaccia-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/pc.c')
| -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)); |