From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtXkv-0002oE-SN for qemu-devel@nongnu.org; Thu, 19 Dec 2013 02:10:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VtXkn-0005R4-D8 for qemu-devel@nongnu.org; Thu, 19 Dec 2013 02:10:49 -0500 Received: from mail-pb0-x229.google.com ([2607:f8b0:400e:c01::229]:41123) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtXkn-0005Qx-0E for qemu-devel@nongnu.org; Thu, 19 Dec 2013 02:10:41 -0500 Received: by mail-pb0-f41.google.com with SMTP id jt11so775249pbb.0 for ; Wed, 18 Dec 2013 23:10:40 -0800 (PST) Date: Thu, 19 Dec 2013 17:10:06 +1000 From: "Edgar E. Iglesias" Message-ID: <20131219071006.GB26842@edvb> References: <1387432293-17711-1-git-send-email-edgar.iglesias@gmail.com> <1387432293-17711-23-git-send-email-edgar.iglesias@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH v2 22/22] petalogix-ml605: Make the LMB visible only to the CPU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Crosthwaite Cc: Peter Maydell , "qemu-devel@nongnu.org Developers" , Blue Swirl , Anthony Liguori , Peter Crosthwaite , Paolo Bonzini , Andreas =?iso-8859-1?Q?F=E4rber?= , Aurelien Jarno , Richard Henderson On Thu, Dec 19, 2013 at 04:37:22PM +1000, Peter Crosthwaite wrote: > On Thu, Dec 19, 2013 at 3:51 PM, wrote: > > From: "Edgar E. Iglesias" > > > > Signed-off-by: Edgar E. Iglesias > > --- > > hw/microblaze/petalogix_ml605_mmu.c | 17 ++++++++++++++++- > > 1 file changed, 16 insertions(+), 1 deletion(-) > > > > diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c > > index 4009ff5..0a13b0e 100644 > > --- a/hw/microblaze/petalogix_ml605_mmu.c > > +++ b/hw/microblaze/petalogix_ml605_mmu.c > > @@ -88,10 +88,18 @@ petalogix_ml605_init(QEMUMachineInitArgs *args) > > hwaddr ddr_base = MEMORY_BASEADDR; > > MemoryRegion *phys_lmb_bram = g_new(MemoryRegion, 1); > > MemoryRegion *phys_ram = g_new(MemoryRegion, 1); > > + MemoryRegion *sysmem_alias = g_new(MemoryRegion, 1); > > + MemoryRegion *mr_cpu_root = g_new(MemoryRegion, 1); > > + AddressSpace *as_cpu = g_malloc0(sizeof(*as_cpu)); > > qemu_irq irq[32], *cpu_irq; > > > > + /* Setup the CPU specific address-space. */ > > + memory_region_init(mr_cpu_root, NULL, "as-cpu-root", INT64_MAX); > > + address_space_init(as_cpu, mr_cpu_root, "as/cpu"); > > + > > /* init CPUs */ > > cpu = MICROBLAZE_CPU(object_new(TYPE_MICROBLAZE_CPU)); > > + qdev_prop_set_address_space(DEVICE(cpu), "address-space", as_cpu); > > object_property_set_bool(OBJECT(cpu), true, "realized", &err); > > if (err) { > > error_report("%s", error_get_pretty(err)); > > @@ -100,11 +108,18 @@ petalogix_ml605_init(QEMUMachineInitArgs *args) > > > > env = &cpu->env; > > > > + /* Populate the CPU AS with the LMB only visible to the CPU. */ > > + memory_region_init_alias(sysmem_alias, NULL, "sysmem_alias", > > + address_space_mem, 0, > > + memory_region_size(address_space_mem)); > > Can we patch sysbus MMIO APIs to accept an AS to remove the machine's > reliance on the global address_space_mem completely? Yes good point, thats part of the future work that needs to be done. I've split the stuff into multiple rounds as the patch series will be easily become unmanageable with stuff that touches big parts of the tree. Thanks, Edgar > > Regards, > Peter > > > + memory_region_add_subregion(mr_cpu_root, 0x00000000, sysmem_alias); > > + > > /* Attach emulated BRAM through the LMB. */ > > memory_region_init_ram(phys_lmb_bram, NULL, "petalogix_ml605.lmb_bram", > > LMB_BRAM_SIZE); > > vmstate_register_ram_global(phys_lmb_bram); > > - memory_region_add_subregion(address_space_mem, 0x00000000, phys_lmb_bram); > > + memory_region_add_subregion_overlap(mr_cpu_root, 0x00000000, > > + phys_lmb_bram, 2); > > > > memory_region_init_ram(phys_ram, NULL, "petalogix_ml605.ram", ram_size); > > vmstate_register_ram_global(phys_ram); > > -- > > 1.7.10.4 > > > >