qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 59/86] ppc:e500: drop RAM size fixup


From: David Gibson
Subject: Re: [PATCH v2 59/86] ppc:e500: drop RAM size fixup
Date: Thu, 16 Jan 2020 11:08:10 +1000

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 <address@hidden>

Acked-by: David Gibson <address@hidden>

> 
> ---
> v2:
>  * fix format string cousing build failure on 32-bit host
>    (Philippe Mathieu-Daudé <address@hidden>)
> 
> CC: address@hidden
> CC: address@hidden
> ---
>  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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]