riscv: Fix to put "riscv.hart_array" devices on sysbus
riscv_sifive_e_soc_init(), riscv_sifive_u_soc_init(), spike_board_init(), spike_v1_10_0_board_init(), spike_v1_09_1_board_init(), and riscv_virt_board_init() create "riscv-hart_array" sysbus devices in a way that leaves them unplugged. Create them the common way that puts them into the main system bus. Affects machines sifive_e, sifive_u, spike, spike_v1.10, spike_v1.9.1, and virt. Visible in "info qtree", here's the change for sifive_e: bus: main-system-bus type System + dev: riscv.hart_array, id "" + num-harts = 1 (0x1) + hartid-base = 0 (0x0) + cpu-type = "sifive-e31-riscv-cpu" dev: sifive_soc.gpio, id "" Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Alistair Francis <Alistair.Francis@wdc.com> Cc: Sagar Karandikar <sagark@eecs.berkeley.edu> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Cc: qemu-riscv@nongnu.org Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20200609122339.937862-20-armbru@redhat.com>
This commit is contained in:
parent
734a591433
commit
75a6ed875f
@ -94,9 +94,8 @@ static void riscv_lowrisc_ibex_soc_init(Object *obj)
|
||||
{
|
||||
LowRISCIbexSoCState *s = RISCV_IBEX_SOC(obj);
|
||||
|
||||
object_initialize_child(obj, "cpus", &s->cpus,
|
||||
sizeof(s->cpus), TYPE_RISCV_HART_ARRAY,
|
||||
&error_abort, NULL);
|
||||
sysbus_init_child_obj(obj, "cpus", &s->cpus,
|
||||
sizeof(s->cpus), TYPE_RISCV_HART_ARRAY);
|
||||
}
|
||||
|
||||
static void riscv_lowrisc_ibex_soc_realize(DeviceState *dev_soc, Error **errp)
|
||||
|
@ -149,9 +149,8 @@ static void riscv_sifive_e_soc_init(Object *obj)
|
||||
MachineState *ms = MACHINE(qdev_get_machine());
|
||||
SiFiveESoCState *s = RISCV_E_SOC(obj);
|
||||
|
||||
object_initialize_child(obj, "cpus", &s->cpus,
|
||||
sizeof(s->cpus), TYPE_RISCV_HART_ARRAY,
|
||||
&error_abort, NULL);
|
||||
sysbus_init_child_obj(obj, "cpus", &s->cpus,
|
||||
sizeof(s->cpus), TYPE_RISCV_HART_ARRAY);
|
||||
object_property_set_int(OBJECT(&s->cpus), ms->smp.cpus, "num-harts",
|
||||
&error_abort);
|
||||
sysbus_init_child_obj(obj, "riscv.sifive.e.gpio0",
|
||||
|
@ -491,10 +491,9 @@ static void sifive_u_soc_instance_init(Object *obj)
|
||||
&error_abort, NULL);
|
||||
qdev_prop_set_uint32(DEVICE(&s->e_cluster), "cluster-id", 0);
|
||||
|
||||
object_initialize_child(OBJECT(&s->e_cluster), "e-cpus",
|
||||
sysbus_init_child_obj(OBJECT(&s->e_cluster), "e-cpus",
|
||||
&s->e_cpus, sizeof(s->e_cpus),
|
||||
TYPE_RISCV_HART_ARRAY, &error_abort,
|
||||
NULL);
|
||||
TYPE_RISCV_HART_ARRAY);
|
||||
qdev_prop_set_uint32(DEVICE(&s->e_cpus), "num-harts", 1);
|
||||
qdev_prop_set_uint32(DEVICE(&s->e_cpus), "hartid-base", 0);
|
||||
qdev_prop_set_string(DEVICE(&s->e_cpus), "cpu-type", SIFIVE_E_CPU);
|
||||
@ -504,10 +503,9 @@ static void sifive_u_soc_instance_init(Object *obj)
|
||||
&error_abort, NULL);
|
||||
qdev_prop_set_uint32(DEVICE(&s->u_cluster), "cluster-id", 1);
|
||||
|
||||
object_initialize_child(OBJECT(&s->u_cluster), "u-cpus",
|
||||
sysbus_init_child_obj(OBJECT(&s->u_cluster), "u-cpus",
|
||||
&s->u_cpus, sizeof(s->u_cpus),
|
||||
TYPE_RISCV_HART_ARRAY, &error_abort,
|
||||
NULL);
|
||||
TYPE_RISCV_HART_ARRAY);
|
||||
qdev_prop_set_uint32(DEVICE(&s->u_cpus), "num-harts", ms->smp.cpus - 1);
|
||||
qdev_prop_set_uint32(DEVICE(&s->u_cpus), "hartid-base", 1);
|
||||
qdev_prop_set_string(DEVICE(&s->u_cpus), "cpu-type", SIFIVE_U_CPU);
|
||||
|
@ -169,8 +169,8 @@ static void spike_board_init(MachineState *machine)
|
||||
unsigned int smp_cpus = machine->smp.cpus;
|
||||
|
||||
/* Initialize SOC */
|
||||
object_initialize_child(OBJECT(machine), "soc", &s->soc, sizeof(s->soc),
|
||||
TYPE_RISCV_HART_ARRAY, &error_abort, NULL);
|
||||
sysbus_init_child_obj(OBJECT(machine), "soc", &s->soc, sizeof(s->soc),
|
||||
TYPE_RISCV_HART_ARRAY);
|
||||
object_property_set_str(OBJECT(&s->soc), machine->cpu_type, "cpu-type",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&s->soc), smp_cpus, "num-harts",
|
||||
|
@ -485,8 +485,8 @@ static void virt_machine_init(MachineState *machine)
|
||||
unsigned int smp_cpus = machine->smp.cpus;
|
||||
|
||||
/* Initialize SOC */
|
||||
object_initialize_child(OBJECT(machine), "soc", &s->soc, sizeof(s->soc),
|
||||
TYPE_RISCV_HART_ARRAY, &error_abort, NULL);
|
||||
sysbus_init_child_obj(OBJECT(machine), "soc", &s->soc, sizeof(s->soc),
|
||||
TYPE_RISCV_HART_ARRAY);
|
||||
object_property_set_str(OBJECT(&s->soc), machine->cpu_type, "cpu-type",
|
||||
&error_abort);
|
||||
object_property_set_int(OBJECT(&s->soc), smp_cpus, "num-harts",
|
||||
|
Loading…
Reference in New Issue
Block a user