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>
This commit is contained in:
parent
7fe55c3cba
commit
e1570d0005
18
hw/i386/pc.c
18
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,
|
static X86CPU *pc_new_cpu(const char *cpu_model, int64_t apic_id,
|
||||||
DeviceState *icc_bridge, Error **errp)
|
DeviceState *icc_bridge, Error **errp)
|
||||||
{
|
{
|
||||||
X86CPU *cpu;
|
X86CPU *cpu = NULL;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
|
|
||||||
cpu = cpu_x86_create(cpu_model, icc_bridge, &local_err);
|
if (icc_bridge == NULL) {
|
||||||
if (local_err != NULL) {
|
error_setg(&local_err, "Invalid icc-bridge value");
|
||||||
error_propagate(errp, local_err);
|
goto out;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cpu = cpu_x86_create(cpu_model, &local_err);
|
||||||
|
if (local_err != 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_int(OBJECT(cpu), apic_id, "apic-id", &local_err);
|
||||||
object_property_set_bool(OBJECT(cpu), true, "realized", &local_err);
|
object_property_set_bool(OBJECT(cpu), true, "realized", &local_err);
|
||||||
|
|
||||||
|
out:
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
object_unref(OBJECT(cpu));
|
object_unref(OBJECT(cpu));
|
||||||
|
@ -2076,8 +2076,7 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge,
|
X86CPU *cpu_x86_create(const char *cpu_model, Error **errp)
|
||||||
Error **errp)
|
|
||||||
{
|
{
|
||||||
X86CPU *cpu = NULL;
|
X86CPU *cpu = NULL;
|
||||||
X86CPUClass *xcc;
|
X86CPUClass *xcc;
|
||||||
@ -2108,15 +2107,6 @@ X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge,
|
|||||||
|
|
||||||
cpu = X86_CPU(object_new(object_class_get_name(oc)));
|
cpu = X86_CPU(object_new(object_class_get_name(oc)));
|
||||||
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
|
||||||
if (icc_bridge == NULL) {
|
|
||||||
error_setg(&error, "Invalid icc-bridge value");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
qdev_set_parent_bus(DEVICE(cpu), qdev_get_child_bus(icc_bridge, "icc"));
|
|
||||||
object_unref(OBJECT(cpu));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
x86_cpu_parse_featurestr(CPU(cpu), features, &error);
|
x86_cpu_parse_featurestr(CPU(cpu), features, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
goto out;
|
goto out;
|
||||||
@ -2139,7 +2129,7 @@ X86CPU *cpu_x86_init(const char *cpu_model)
|
|||||||
Error *error = NULL;
|
Error *error = NULL;
|
||||||
X86CPU *cpu;
|
X86CPU *cpu;
|
||||||
|
|
||||||
cpu = cpu_x86_create(cpu_model, NULL, &error);
|
cpu = cpu_x86_create(cpu_model, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -982,8 +982,7 @@ typedef struct CPUX86State {
|
|||||||
#include "cpu-qom.h"
|
#include "cpu-qom.h"
|
||||||
|
|
||||||
X86CPU *cpu_x86_init(const char *cpu_model);
|
X86CPU *cpu_x86_init(const char *cpu_model);
|
||||||
X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge,
|
X86CPU *cpu_x86_create(const char *cpu_model, Error **errp);
|
||||||
Error **errp);
|
|
||||||
int cpu_x86_exec(CPUX86State *s);
|
int cpu_x86_exec(CPUX86State *s);
|
||||||
void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf);
|
void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf);
|
||||||
void x86_cpudef_setup(void);
|
void x86_cpudef_setup(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user