qemu-devel
[Top][All Lists]
Advanced

[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
> >
> >



reply via email to

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