On Thu, 2013-11-07 at 22:48 +0100, Laszlo Ersek wrote:
> On 11/07/13 22:24, Marcel Apfelbaum wrote:
> > On Thu, 2013-11-07 at 22:12 +0100, Laszlo Ersek wrote:
>
> >> adding subregion 'pci-hole' to region 'system' at offset 60000000
> >> warning: subregion collision 60000000/a0000000 (pci-hole) vs
> >> ffe00000/200000 (system.flash)
> > Thank you Laszlo for the detailed info!
> > I think the problem is right above. Why pci-hole and system.flash collide?
> > IMHO we should not play with priorities here, better solve the collision.
>
> pc_init1()
> pc_memory_init()
> pc_system_firmware_init()
> pc_system_flash_init() <---- sets base address to
> 0x100000000ULL - flash_size
> pflash_cfi01_register()
> sysbus_mmio_map()
> sysbus_mmio_map_common()
> memory_region_add_subregion()
> i440fx_init()
> memory_region_init_alias("pci-hole")
>
> pc_init1() passes
>
> 0x100000000ULL - below_4g_mem_size
>
> to i440fx_init() as "pci_hole_size", which is then used as the size of
> the "pci-hole" alias.
>
> We should probably subtract the size of the flash from this, but I don't
> know how to do that "elegantly". Yet another (output) parameter for
> pc_memory_init()? Blech.
>
> Or look up the end address of "system.flash" by name?
Both seems ugly to me...
As Peter Maydell pointed out, the pci-hole belongs to the pc model,
so we can actually change its priority without affecting other
architectures.
>
> Thanks
> Laszlo
>