memory_region_set_size() handle the 16 Exabytes limit by
special-casing the UINT64_MAX value. This is not a problem
for the 32-bit maximum, 4 GiB.
By using the UINT32_MAX value, the aspeed-ram-container
MemoryRegion ends up missing 1 byte:
$ qemu-system-arm -M ast2600-evb -S -monitor stdio
(qemu) info mtree
address-space: aspeed.fmc-ast2600-dma-dram
0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container
0000000080000000-00000000bfffffff (prio 0, ram): ram
00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram
Fix by using the correct value. We now have:
address-space: aspeed.fmc-ast2600-dma-dram
0000000080000000-000000017fffffff (prio 0, i/o): aspeed-ram-container
0000000080000000-00000000bfffffff (prio 0, ram): ram
00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/arm/aspeed.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 2c23297edf..62344ac6a3 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -262,7 +262,7 @@ static void aspeed_machine_init(MachineState *machine)
bmc = g_new0(AspeedBoardState, 1);
memory_region_init(&bmc->ram_container, NULL, "aspeed-ram-container",
- UINT32_MAX);
+ 4 * GiB);
memory_region_add_subregion(&bmc->ram_container, 0, machine->ram);
object_initialize_child(OBJECT(machine), "soc", &bmc->soc,
--
2.21.3
On 6/1/20 4:29 PM, Philippe Mathieu-Daudé wrote: > memory_region_set_size() handle the 16 Exabytes limit by > special-casing the UINT64_MAX value. This is not a problem > for the 32-bit maximum, 4 GiB. > By using the UINT32_MAX value, the aspeed-ram-container > MemoryRegion ends up missing 1 byte: > > $ qemu-system-arm -M ast2600-evb -S -monitor stdio > (qemu) info mtree > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Fix by using the correct value. We now have: > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017fffffff (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > hw/arm/aspeed.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 2c23297edf..62344ac6a3 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -262,7 +262,7 @@ static void aspeed_machine_init(MachineState *machine) > bmc = g_new0(AspeedBoardState, 1); > > memory_region_init(&bmc->ram_container, NULL, "aspeed-ram-container", > - UINT32_MAX); > + 4 * GiB); > memory_region_add_subregion(&bmc->ram_container, 0, machine->ram); > > object_initialize_child(OBJECT(machine), "soc", &bmc->soc, >
On 6/1/20 7:29 AM, Philippe Mathieu-Daudé wrote: > memory_region_set_size() handle the 16 Exabytes limit by > special-casing the UINT64_MAX value. This is not a problem > for the 32-bit maximum, 4 GiB. > By using the UINT32_MAX value, the aspeed-ram-container > MemoryRegion ends up missing 1 byte: > > $ qemu-system-arm -M ast2600-evb -S -monitor stdio > (qemu) info mtree > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Fix by using the correct value. We now have: > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017fffffff (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/arm/aspeed.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
Le 01/06/2020 à 16:29, Philippe Mathieu-Daudé a écrit : > memory_region_set_size() handle the 16 Exabytes limit by > special-casing the UINT64_MAX value. This is not a problem > for the 32-bit maximum, 4 GiB. > By using the UINT32_MAX value, the aspeed-ram-container > MemoryRegion ends up missing 1 byte: > > $ qemu-system-arm -M ast2600-evb -S -monitor stdio > (qemu) info mtree > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Fix by using the correct value. We now have: > > address-space: aspeed.fmc-ast2600-dma-dram > 0000000080000000-000000017fffffff (prio 0, i/o): aspeed-ram-container > 0000000080000000-00000000bfffffff (prio 0, ram): ram > 00000000c0000000-ffffffffffffffff (prio 0, i/o): max_ram > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/arm/aspeed.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 2c23297edf..62344ac6a3 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -262,7 +262,7 @@ static void aspeed_machine_init(MachineState *machine) > bmc = g_new0(AspeedBoardState, 1); > > memory_region_init(&bmc->ram_container, NULL, "aspeed-ram-container", > - UINT32_MAX); > + 4 * GiB); > memory_region_add_subregion(&bmc->ram_container, 0, machine->ram); > > object_initialize_child(OBJECT(machine), "soc", &bmc->soc, > Applied to my trivial-patches branch. Thanks, Laurent
© 2016 - 2026 Red Hat, Inc.