hw/riscv/virt.c: add address-cells in create_fdt_one_aplic()
We need #address-cells properties in all interrupt controllers that are
referred by an interrupt-map [1]. For the RISC-V machine, both PLIC and
APLIC controllers must have this property.
PLIC already sets it in create_fdt_socket_plic(). Set the property for
APLIC in create_fdt_one_aplic().
[1] https://lore.kernel.org/linux-arm-kernel/CAL_JsqJE15D-xXxmELsmuD+JQHZzxGzdXvikChn6KFWqk6NzPw@mail.gmail.com/
Suggested-by: Anup Patel <apatel@ventanamicro.com>
Fixes: e6faee6585
("hw/riscv: virt: Add optional AIA APLIC support to virt machine")
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20240531202759.911601-2-dbarboza@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
15b8ddb18a
commit
190e0ae629
@ -609,6 +609,8 @@ static void create_fdt_one_aplic(RISCVVirtState *s, int socket,
|
|||||||
aplic_name = g_strdup_printf("/soc/aplic@%lx", aplic_addr);
|
aplic_name = g_strdup_printf("/soc/aplic@%lx", aplic_addr);
|
||||||
qemu_fdt_add_subnode(ms->fdt, aplic_name);
|
qemu_fdt_add_subnode(ms->fdt, aplic_name);
|
||||||
qemu_fdt_setprop_string(ms->fdt, aplic_name, "compatible", "riscv,aplic");
|
qemu_fdt_setprop_string(ms->fdt, aplic_name, "compatible", "riscv,aplic");
|
||||||
|
qemu_fdt_setprop_cell(ms->fdt, aplic_name, "#address-cells",
|
||||||
|
FDT_APLIC_ADDR_CELLS);
|
||||||
qemu_fdt_setprop_cell(ms->fdt, aplic_name,
|
qemu_fdt_setprop_cell(ms->fdt, aplic_name,
|
||||||
"#interrupt-cells", FDT_APLIC_INT_CELLS);
|
"#interrupt-cells", FDT_APLIC_INT_CELLS);
|
||||||
qemu_fdt_setprop(ms->fdt, aplic_name, "interrupt-controller", NULL, 0);
|
qemu_fdt_setprop(ms->fdt, aplic_name, "interrupt-controller", NULL, 0);
|
||||||
|
@ -118,6 +118,7 @@ enum {
|
|||||||
#define FDT_PLIC_ADDR_CELLS 0
|
#define FDT_PLIC_ADDR_CELLS 0
|
||||||
#define FDT_PLIC_INT_CELLS 1
|
#define FDT_PLIC_INT_CELLS 1
|
||||||
#define FDT_APLIC_INT_CELLS 2
|
#define FDT_APLIC_INT_CELLS 2
|
||||||
|
#define FDT_APLIC_ADDR_CELLS 0
|
||||||
#define FDT_IMSIC_INT_CELLS 0
|
#define FDT_IMSIC_INT_CELLS 0
|
||||||
#define FDT_MAX_INT_CELLS 2
|
#define FDT_MAX_INT_CELLS 2
|
||||||
#define FDT_MAX_INT_MAP_WIDTH (FDT_PCI_ADDR_CELLS + FDT_PCI_INT_CELLS + \
|
#define FDT_MAX_INT_MAP_WIDTH (FDT_PCI_ADDR_CELLS + FDT_PCI_INT_CELLS + \
|
||||||
|
Loading…
Reference in New Issue
Block a user