[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
>> >
>> >
>
- [Qemu-devel] [PATCH v2 17/22] exec: Make cpu_memory_rw_debug use the CPUs AS, (continued)
- [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