[PATCH v5 02/18] hw/hexagon: move VTCM to the common machine state

Brian Cain <[email protected]> Wed, 5 Aug 2026 21:27:07 -0700
Newsgroups gmane.comp.emulators.qemu
Message-ID <[email protected]>
The VTCM is described by the config table, so every machine can set it
up the same way.

Reviewed-by: Pierrick Bouvier <[email protected]>
Signed-off-by: Brian Cain <[email protected]>
---
 include/hw/hexagon/hexagon.h | 1 +
 include/hw/hexagon/virt.h    | 1 -
 hw/hexagon/hex-subsys.c      | 8 ++++++++
 hw/hexagon/virt.c            | 5 -----
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/include/hw/hexagon/hexagon.h b/include/hw/hexagon/hexagon.h
index 1034b09c2ac..9c73cadb16d 100644
--- a/include/hw/hexagon/hexagon.h
+++ b/include/hw/hexagon/hexagon.h
@@ -156,6 +156,7 @@ struct HexagonCommonMachineState {
 
     MemoryRegion ram;
     MemoryRegion cfgtable_rom;
+    MemoryRegion vtcm;
 };
 
 #endif
diff --git a/include/hw/hexagon/virt.h b/include/hw/hexagon/virt.h
index fcb47762194..cf0cd2f8f22 100644
--- a/include/hw/hexagon/virt.h
+++ b/include/hw/hexagon/virt.h
@@ -17,7 +17,6 @@ struct HexagonVirtMachineState {
     int fdt_size;
     MemoryRegion *sys;
     MemoryRegion tcm;
-    MemoryRegion vtcm;
     MemoryRegion bios;
     Clock *apb_clk;
 };
diff --git a/hw/hexagon/hex-subsys.c b/hw/hexagon/hex-subsys.c
index d146ee0c075..0c20cf02e7d 100644
--- a/hw/hexagon/hex-subsys.c
+++ b/hw/hexagon/hex-subsys.c
@@ -29,4 +29,12 @@ void hex_subsys_create(HexagonCommonMachineState *hms,
     rom_add_blob_fixed_as("config_table.rom", &m_cfg->cfgtable,
                           sizeof(m_cfg->cfgtable), m_cfg->cfgbase,
                           &address_space_memory);
+
+    if (m_cfg->cfgtable.vtcm_size_kb > 0) {
+        memory_region_init_ram(&hms->vtcm, NULL, "vtcm.ram",
+                               m_cfg->cfgtable.vtcm_size_kb * 1024,
+                               &error_fatal);
+        memory_region_add_subregion(sysmem, m_cfg->cfgtable.vtcm_base << 16,
+                                    &hms->vtcm);
+    }
 }
diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c
index ad0bc4f1329..53eaafaf85a 100644
--- a/hw/hexagon/virt.c
+++ b/hw/hexagon/virt.c
@@ -75,11 +75,6 @@ static void fdt_add_hvx(HexagonVirtMachineState *vms,
     const MachineState *ms = MACHINE(vms);
     uint32_t vtcm_size_bytes = m_cfg->cfgtable.vtcm_size_kb * 1024;
     if (vtcm_size_bytes > 0) {
-        memory_region_init_ram(&vms->vtcm, NULL, "vtcm.ram", vtcm_size_bytes,
-                               &error_fatal);
-        memory_region_add_subregion(vms->sys, m_cfg->cfgtable.vtcm_base << 16,
-                                    &vms->vtcm);
-
         qemu_fdt_add_subnode(ms->fdt, "/soc/vtcm");
         qemu_fdt_setprop_string(ms->fdt, "/soc/vtcm", "compatible",
                                 "qcom,hexagon_vtcm");
-- 
2.34.1