summaryrefslogtreecommitdiffstats
path: root/hw/riscv/virt.c
diff options
context:
space:
mode:
authorRichard Henderson2022-05-25 00:55:12 +0200
committerRichard Henderson2022-05-25 00:55:12 +0200
commit0cac736e73723850a99e5142e35d14d8f8efb232 (patch)
treee4c22259d89d1d6359c093f200021716b1f99167 /hw/riscv/virt.c
parentMerge tag 'pull-request-2022-05-18' of https://gitlab.com/thuth/qemu into sta... (diff)
parenthw/core: loader: Set is_linux to true for VxWorks uImage (diff)
downloadqemu-0cac736e73723850a99e5142e35d14d8f8efb232.tar.gz
qemu-0cac736e73723850a99e5142e35d14d8f8efb232.tar.xz
qemu-0cac736e73723850a99e5142e35d14d8f8efb232.zip
Merge tag 'pull-riscv-to-apply-20220525' of github.com:alistair23/qemu into staging
Third RISC-V PR for QEMU 7.1 * Fixes for accessing VS hypervisor CSRs * Improvements for RISC-V Vector extension * Fixes for accessing mtimecmp * Add new short-isa-string CPU option * Improvements to RISC-V machine error handling * Disable the "G" extension by default internally, no functional change * Enforce floating point extension requirements * Cleanup ISA extension checks * Resolve redundant property accessors * Fix typo of mimpid cpu option * Improvements for virtulisation * Add zicsr/zifencei to isa_string * Support for VxWorks uImage # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCAAdFiEE9sSsRtSTSGjTuM6PIeENKd+XcFQFAmKNX4sACgkQIeENKd+X # cFRikQgAqdRtGCj9XidnHV7QJkUkckmbqp8ZLwxo3PnoNkKirO8muXlo5jt9veyz # LGn5nx6rmKX4fjs6CAQ+pNR2Pw2qFfrQiEpQXEhK6Zg6jh576qscqgwhX9JVSmrN # is7nxpG1J/ZtMzO70DfgzmHO8Ykf+Ca6PNM/4kBftmqsPYjD5nUu/o9RJ98jgpem # lI3U7sHx9xdoIBUVZO6CwRpmovTAvhz7usRbtKVTSXi7+IElFweyFacxT5X5xvgm # Wj0GhQaeOYy7sww5XfXClQCeJXJS77ZQiPIaiT0W8vKs5dhY3Eux3zqqt9hWChny # 0vFoYwHnYS5y8cy56IKeeg0/jnZq+A== # =NiH/ # -----END PGP SIGNATURE----- # gpg: Signature made Tue 24 May 2022 03:43:23 PM PDT # gpg: using RSA key F6C4AC46D4934868D3B8CE8F21E10D29DF977054 # gpg: Good signature from "Alistair Francis <alistair@alistair23.me>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: F6C4 AC46 D493 4868 D3B8 CE8F 21E1 0D29 DF97 7054 * tag 'pull-riscv-to-apply-20220525' of github.com:alistair23/qemu: (23 commits) hw/core: loader: Set is_linux to true for VxWorks uImage hw/core: Sync uboot_image.h from U-Boot v2022.01 target/riscv: add zicsr/zifencei to isa_string hw/riscv: virt: Fix interrupt parent for dynamic platform devices target/riscv: Set [m|s]tval for both illegal and virtual instruction traps target/riscv: Fix hstatus.GVA bit setting for traps taken from HS-mode target/riscv: Fix csr number based privilege checking target/riscv: Fix typo of mimpid cpu option target/riscv: check 'I' and 'E' after checking 'G' in riscv_cpu_realize hw/riscv/sifive_u: Resolve redundant property accessors hw/vfio/pci-quirks: Resolve redundant property getters target/riscv: Move/refactor ISA extension checks target/riscv: FP extension requirements target/riscv: Change "G" expansion target/riscv: Disable "G" by default target/riscv: Fix coding style on "G" expansion hw/riscv: Make CPU config error handling generous (sifive_e/u/opentitan) hw/riscv: Make CPU config error handling generous (virt/spike) target/riscv: Add short-isa-string option target/riscv: Move Zhinx* extensions on ISA string ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'hw/riscv/virt.c')
-rw-r--r--hw/riscv/virt.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index 3326f4db96..293e9c95b7 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -478,10 +478,12 @@ static void create_fdt_socket_plic(RISCVVirtState *s,
qemu_fdt_setprop_cell(mc->fdt, plic_name, "phandle",
plic_phandles[socket]);
- platform_bus_add_all_fdt_nodes(mc->fdt, plic_name,
- memmap[VIRT_PLATFORM_BUS].base,
- memmap[VIRT_PLATFORM_BUS].size,
- VIRT_PLATFORM_BUS_IRQ);
+ if (!socket) {
+ platform_bus_add_all_fdt_nodes(mc->fdt, plic_name,
+ memmap[VIRT_PLATFORM_BUS].base,
+ memmap[VIRT_PLATFORM_BUS].size,
+ VIRT_PLATFORM_BUS_IRQ);
+ }
g_free(plic_name);
@@ -561,11 +563,6 @@ static void create_fdt_imsic(RISCVVirtState *s, const MemMapEntry *memmap,
}
qemu_fdt_setprop_cell(mc->fdt, imsic_name, "phandle", *msi_m_phandle);
- platform_bus_add_all_fdt_nodes(mc->fdt, imsic_name,
- memmap[VIRT_PLATFORM_BUS].base,
- memmap[VIRT_PLATFORM_BUS].size,
- VIRT_PLATFORM_BUS_IRQ);
-
g_free(imsic_name);
/* S-level IMSIC node */
@@ -704,10 +701,12 @@ static void create_fdt_socket_aplic(RISCVVirtState *s,
riscv_socket_fdt_write_id(mc, mc->fdt, aplic_name, socket);
qemu_fdt_setprop_cell(mc->fdt, aplic_name, "phandle", aplic_s_phandle);
- platform_bus_add_all_fdt_nodes(mc->fdt, aplic_name,
- memmap[VIRT_PLATFORM_BUS].base,
- memmap[VIRT_PLATFORM_BUS].size,
- VIRT_PLATFORM_BUS_IRQ);
+ if (!socket) {
+ platform_bus_add_all_fdt_nodes(mc->fdt, aplic_name,
+ memmap[VIRT_PLATFORM_BUS].base,
+ memmap[VIRT_PLATFORM_BUS].size,
+ VIRT_PLATFORM_BUS_IRQ);
+ }
g_free(aplic_name);
@@ -1351,7 +1350,7 @@ static void virt_machine_init(MachineState *machine)
base_hartid, &error_abort);
object_property_set_int(OBJECT(&s->soc[i]), "num-harts",
hart_count, &error_abort);
- sysbus_realize(SYS_BUS_DEVICE(&s->soc[i]), &error_abort);
+ sysbus_realize(SYS_BUS_DEVICE(&s->soc[i]), &error_fatal);
if (!kvm_enabled()) {
if (s->have_aclint) {