[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 22/22] petalogix-ml605: Make the LMB visible
From: |
Edgar E. Iglesias |
Subject: |
Re: [Qemu-devel] [PATCH v2 22/22] petalogix-ml605: Make the LMB visible only to the CPU |
Date: |
Thu, 19 Dec 2013 17:10:06 +1000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Dec 19, 2013 at 04:37:22PM +1000, Peter Crosthwaite wrote:
> On Thu, Dec 19, 2013 at 3:51 PM, <address@hidden> wrote:
> > From: "Edgar E. Iglesias" <address@hidden>
> >
> > Signed-off-by: Edgar E. Iglesias <address@hidden>
> > ---
> > 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
> >
> >
- [Qemu-devel] [PATCH v2 16/22] exec: Make cpu_physical_memory_write_rom input an AS, (continued)
- [Qemu-devel] [PATCH v2 16/22] exec: Make cpu_physical_memory_write_rom input an AS, edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 17/22] exec: Make cpu_memory_rw_debug use the CPUs AS, edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 18/22] memory: Add address_space_find_by_name(), edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 19/22] qdev: Add qdev property type for AddressSpaces, edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 20/22] target-microblaze: Add address-space property, edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 21/22] petalogix-ml605: Create the CPU with object_new(), edgar . iglesias, 2013/12/19
- [Qemu-devel] [PATCH v2 22/22] petalogix-ml605: Make the LMB visible only to the CPU, edgar . iglesias, 2013/12/19