Salutations,
We have a good amount of code repetition between boards, mostly because we copied/pasted components from one to the other across the years. But now we want to upstream the RISC-V Server Platform, currently at v8 [1], and this topic came in the review. This is a work I've been ducking for 2 years now but seems like it's time we do something about it. The patches are mostly code moving work with some design decisions here and there in the new helper file. When needed I changed board code first to be compatible with what would be the helper (usually the code from 'virt', which is more modern) and then I moved stuff to a helper. The result of this series in the FDTs: - for 'virt': no changes; - for 'spike': the /htif node changed places with /soc; - for 'sifive_u': phandles values for cpu-intc changed because now we're generating them (see patch 1). Aside from that the board now has a 'cpu-map' subnode with cluster and core IDs; This is not everything - I have a shorter follow up FDT series ready to go as soon as we get this accepted. Figured that 13 patches is enough for one go. Patches based on alistair/riscv-to-apply.next. [1] https://lore.kernel.org/qemu-devel/[email protected]/ Daniel Henrique Barboza (13): hw/riscv/sifive_u.c: add a FDT phandle to cpu-intc hw/riscv: add fdt-common helper hw/riscv/numa: make numa_enabled() public hw/riscv: add create_fdt_socket_memory() helper hw/riscv/sifive_u.c: add intc_phandles array hw/riscv/spike.c: add intc_phandles array hw/riscv: add create_fdt_clint() helper hw/riscv/sifive_u.c: add cpu-map, cluster and core DTs hw/riscv: add fdt_create_cpu_socket_subnode() helper hw/riscv: add create_fdt_socket_cpus() hw/riscv/spike.c: use create_fdt_socket_cpus() hw/riscv/fdt_common.c: create create_fdt_socket_cpu_internal() hw/riscv: add create_fdt_socket_cpu_sifive() hw/riscv/fdt-common.c | 202 ++++++++++++++++++++++++++++++++++ hw/riscv/meson.build | 1 + hw/riscv/numa.c | 20 ++-- hw/riscv/sifive_u.c | 88 ++++----------- hw/riscv/spike.c | 123 ++++----------------- hw/riscv/virt.c | 182 +++++------------------------- include/hw/riscv/fdt-common.h | 33 ++++++ include/hw/riscv/numa.h | 8 ++ 8 files changed, 322 insertions(+), 335 deletions(-) create mode 100644 hw/riscv/fdt-common.c create mode 100644 include/hw/riscv/fdt-common.h -- 2.43.0
