On Wed, Jan 15, 2020 at 04:07:14PM +0100, Igor Mammedov wrote: > If user provided non-sense RAM size, board will complain and > continue running with max RAM size supported. > Also RAM is going to be allocated by generic code, so it won't be > possible for board to fix things up for user. > > Make it error message and exit to force user fix CLI, > instead of accepting non-sense CLI values. > > While at it, replace usage of global ram_size with > machine->ram_size > > Signed-off-by: Igor Mammedov <imamm...@redhat.com>
Acked-by: David Gibson <da...@gibson.dropbear.id.au> > > --- > v2: > * fix format string cousing build failure on 32-bit host > (Philippe Mathieu-Daudé <phi...@redhat.com>) > > CC: da...@gibson.dropbear.id.au > CC: qemu-...@nongnu.org > --- > hw/ppc/e500.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index 12b6a5b..6d119fe 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -906,12 +906,14 @@ void ppce500_init(MachineState *machine) > > env = firstenv; > > - /* Fixup Memory size on a alignment boundary */ > - ram_size &= ~(RAM_SIZES_ALIGN - 1); > - machine->ram_size = ram_size; > + if (!QEMU_IS_ALIGNED(machine->ram_size, RAM_SIZES_ALIGN)) { > + error_report("RAM size must be multiple of %" PRIu64, > RAM_SIZES_ALIGN); > + exit(EXIT_FAILURE); > + } > > /* Register Memory */ > - memory_region_allocate_system_memory(ram, NULL, "mpc8544ds.ram", > ram_size); > + memory_region_allocate_system_memory(ram, NULL, "mpc8544ds.ram", > + machine->ram_size); > memory_region_add_subregion(address_space_mem, 0, ram); > > dev = qdev_create(NULL, "e500-ccsr"); > @@ -1083,7 +1085,7 @@ void ppce500_init(MachineState *machine) > kernel_base = cur_base; > kernel_size = load_image_targphys(machine->kernel_filename, > cur_base, > - ram_size - cur_base); > + machine->ram_size - cur_base); > if (kernel_size < 0) { > error_report("could not load kernel '%s'", > machine->kernel_filename); > @@ -1097,7 +1099,7 @@ void ppce500_init(MachineState *machine) > if (machine->initrd_filename) { > initrd_base = (cur_base + INITRD_LOAD_PAD) & ~INITRD_PAD_MASK; > initrd_size = load_image_targphys(machine->initrd_filename, > initrd_base, > - ram_size - initrd_base); > + machine->ram_size - initrd_base); > > if (initrd_size < 0) { > error_report("could not load initial ram disk '%s'", > @@ -1115,7 +1117,7 @@ void ppce500_init(MachineState *machine) > * ensures enough space between kernel and initrd. > */ > dt_base = (loadaddr + payload_size + DTC_LOAD_PAD) & ~DTC_PAD_MASK; > - if (dt_base + DTB_MAX_SIZE > ram_size) { > + if (dt_base + DTB_MAX_SIZE > machine->ram_size) { > error_report("not enough memory for device tree"); > exit(1); > } -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature