aspeed/sdmc: Check RAM size value at realize time
authorCédric Le Goater <clg@redhat.com>
Tue, 25 Jun 2024 06:37:43 +0000 (08:37 +0200)
committerCédric Le Goater <clg@redhat.com>
Tue, 2 Jul 2024 05:52:43 +0000 (07:52 +0200)
The RAM size of the SDMC device is validated for the SoC and set when
the Aspeed machines are initialized and then later used by several
SoC implementations. However, the SDMC model never checks that the RAM
size has been actually set before being used. Do that at realize.

Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Jamin_lin < jamin_lin@aspeedtech.com>
hw/misc/aspeed_sdmc.c

index 93e2e29ead8702f2e65ec799fad6d95ceccbc29f..44da085e10cb0707ed937ef2c0353bb511975c12 100644 (file)
@@ -271,6 +271,12 @@ static void aspeed_sdmc_realize(DeviceState *dev, Error **errp)
     AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s);
 
     assert(asc->max_ram_size < 4 * GiB || asc->is_bus64bit);
+
+    if (!s->ram_size) {
+        error_setg(errp, "RAM size is not set");
+        return;
+    }
+
     s->max_ram_size = asc->max_ram_size;
 
     memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_sdmc_ops, s,