[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
signature.asc
Description: PGP signature