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: Peter Crosthwaite
Subject: Re: [Qemu-devel] [PATCH v2 22/22] petalogix-ml605: Make the LMB visible only to the CPU
Date: Thu, 19 Dec 2013 22:46:06 +1000

On Thu, Dec 19, 2013 at 5:10 PM, Edgar E. Iglesias
<address@hidden> wrote:
> 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.
>

Playing with this too see where it goes. Patches tmrw hopefully.

Regards,
Peter

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