Message ID | 20230302091406.407824-2-dbarboza@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | hw/riscv/virt.c: add cbo[mz]-block-size fdt properties | expand |
On Thu, Mar 2, 2023 at 5:16 PM Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > From: Anup Patel <apatel@ventanamicro.com> > > The cbom-block-size fdt property property is used to inform the OS about > the blocksize in bytes for the Zicbom cache operations. Linux documents > it in Documentation/devicetree/bindings/riscv/cpus.yaml > as: > > riscv,cbom-block-size: > $ref: /schemas/types.yaml#/definitions/uint32 > description: > The blocksize in bytes for the Zicbom cache operations. > > cboz-block-size has the same role but for the Zicboz extension, i.e. > informs the size in bytes for Zicboz cache operations. Linux support > for it is under review/approval in [1]. Patch 3 of that series describes > cboz-block-size as: > > riscv,cboz-block-size: > $ref: /schemas/types.yaml#/definitions/uint32 > description: > The blocksize in bytes for the Zicboz cache operations. > > [1] https://lore.kernel.org/all/20230224162631.405473-1-ajones@ventanamicro.com/ > > Cc: Andrew Jones <ajones@ventanamicro.com> > Signed-off-by: Anup Patel <apatel@ventanamicro.com> > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> > --- > hw/riscv/virt.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > Reviewed-by: Bin Meng <bmeng@tinylab.org>
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 49acb57da4..3799fab9e5 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -244,6 +244,17 @@ static void create_fdt_socket_cpus(RISCVVirtState *s, int socket, name = riscv_isa_string(cpu_ptr); qemu_fdt_setprop_string(ms->fdt, cpu_name, "riscv,isa", name); g_free(name); + + if (cpu_ptr->cfg.ext_icbom) { + qemu_fdt_setprop_cell(ms->fdt, cpu_name, "riscv,cbom-block-size", + cpu_ptr->cfg.cbom_blocksize); + } + + if (cpu_ptr->cfg.ext_icboz) { + qemu_fdt_setprop_cell(ms->fdt, cpu_name, "riscv,cboz-block-size", + cpu_ptr->cfg.cboz_blocksize); + } + qemu_fdt_setprop_string(ms->fdt, cpu_name, "compatible", "riscv"); qemu_fdt_setprop_string(ms->fdt, cpu_name, "status", "okay"); qemu_fdt_setprop_cell(ms->fdt, cpu_name, "reg",