Message ID | 20161025093711.17407-1-jcd@tribudubois.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 25 October 2016 at 10:37, Jean-Christophe Dubois <jcd@tribudubois.net> wrote: > For now Qemu accpet a memory size greater than 256 MB but it would > crash afterward. > > Versatile devices are starting at 256 MB bondary. > > Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> > --- > hw/arm/versatilepb.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c > index 8ae5392..7f11651 100644 > --- a/hw/arm/versatilepb.c > +++ b/hw/arm/versatilepb.c > @@ -198,6 +198,14 @@ static void versatile_init(MachineState *machine, int board_id) > int done_smc = 0; > DriveInfo *dinfo; > > + if (machine->ram_size > 0x10000000) { > + /* devices are starting at address 0x10000000, > + * Memory cannot overlap with devices. > + */ > + fprintf(stderr, "Memory size cannot exceed 256MB\n"); > + exit(1); > + } > + > if (!machine->cpu_model) { > machine->cpu_model = "arm926"; > } > -- Ah, this is a long-standing bug. (I think I first tried to fix it five years or so back but that ran aground on people not liking a general approach where the MachineState indicated the maximum limit for the board.) In any case we seem to have ended up with each board model doing by-hand checks on the RAM size, so this is better than doing nothing. I've applied this to target-arm.next, but I've switched it to use error_report() rather than fprintf(). I also took the liberty of tidying up the commit message and comment text a bit. thanks -- PMM
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 8ae5392..7f11651 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -198,6 +198,14 @@ static void versatile_init(MachineState *machine, int board_id) int done_smc = 0; DriveInfo *dinfo; + if (machine->ram_size > 0x10000000) { + /* devices are starting at address 0x10000000, + * Memory cannot overlap with devices. + */ + fprintf(stderr, "Memory size cannot exceed 256MB\n"); + exit(1); + } + if (!machine->cpu_model) { machine->cpu_model = "arm926"; }
For now Qemu accpet a memory size greater than 256 MB but it would crash afterward. Versatile devices are starting at 256 MB bondary. Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> --- hw/arm/versatilepb.c | 8 ++++++++ 1 file changed, 8 insertions(+)