From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36392) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcOY8-0005SP-Id for qemu-devel@nongnu.org; Sun, 29 Mar 2015 21:31:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YcOY7-0006UD-Es for qemu-devel@nongnu.org; Sun, 29 Mar 2015 21:31:32 -0400 Received: from mail-ob0-x234.google.com ([2607:f8b0:4003:c01::234]:34663) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcOY7-0006U4-AQ for qemu-devel@nongnu.org; Sun, 29 Mar 2015 21:31:31 -0400 Received: by obbgh1 with SMTP id gh1so46405944obb.1 for ; Sun, 29 Mar 2015 18:31:30 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Alistair Francis Date: Mon, 30 Mar 2015 11:31:00 +1000 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [Qemu-devel] [PATCH target-arm v4 14/16] arm: xilinx-ep108: Add external RAM List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Crosthwaite Cc: Edgar Iglesias , Peter Maydell , zach.pfeffer@xilinx.com, Ryota Ozaki , "qemu-devel@nongnu.org Developers" , "michals@xilinx.com" On Mon, Mar 23, 2015 at 9:05 PM, Peter Crosthwaite wrote: > Zynq MPSoC supports external DDR RAM. Add a RAM at 0 to the model. > > Signed-off-by: Peter Crosthwaite Reviewed-by: Alistair Francis Thanks, Alistair > --- > changed since v1: > Add ram size clamps and warnings > > hw/arm/xlnx-ep108.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c > index 81704bb..6e89456 100644 > --- a/hw/arm/xlnx-ep108.c > +++ b/hw/arm/xlnx-ep108.c > @@ -18,11 +18,16 @@ > #include "hw/arm/xlnx-zynqmp.h" > #include "hw/boards.h" > #include "qemu/error-report.h" > +#include "exec/address-spaces.h" > > typedef struct XlnxEP108 { > XlnxZynqMPState soc; > + MemoryRegion ddr_ram; > } XlnxEP108; > > +/* Max 2GB RAM */ > +#define EP108_MAX_RAM_SIZE 0x80000000ull > + > static void xlnx_ep108_init(MachineState *machine) > { > XlnxEP108 *s = g_new0(XlnxEP108, 1); > @@ -37,6 +42,22 @@ static void xlnx_ep108_init(MachineState *machine) > error_report("%s", error_get_pretty(err)); > exit(1); > } > + > + if (machine->ram_size > EP108_MAX_RAM_SIZE) { > + error_report("WARNING: RAM size " RAM_ADDR_FMT " above max supported, " > + "reduced to %llx", machine->ram_size, EP108_MAX_RAM_SIZE); > + machine->ram_size = EP108_MAX_RAM_SIZE; > + } > + > + if (machine->ram_size <= 0x08000000) { > + error_report("WARNING: RAM size " RAM_ADDR_FMT " is small for EP108\n", > + machine->ram_size); > + } > + > + memory_region_init_ram(&s->ddr_ram, NULL, "ddr-ram", machine->ram_size, > + &error_abort); > + vmstate_register_ram_global(&s->ddr_ram); > + memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram); > } > > static QEMUMachine xlnx_ep108_machine = { > -- > 2.3.1.2.g90df61e.dirty > >