On Thu, May 19, 2011 at 05:40:50PM +0300, Avi Kivity wrote: > On 05/19/2011 05:37 PM, Anthony Liguori wrote: > > > >So.... do you do: > > > >isa_register_region(ISABus *bus, MemoryRegion *mr, int priority) > >{ > > chipset_register_region(bus->chipset, mr, priority + 1); > >} > > > >I don't really understand how you can fold everything into one > >table and not allow devices to override their parents using > >priorities. > > Think of how a window manager folds windows with priorities onto a > flat framebuffer. > > You do a depth-first walk of the tree. For each child list, you > iterate it from the lowest to highest priority, allowing later > subregions override earlier subregions. > And how you set those priorities in a sensible way? Why two device on a PCI bus will want to register their memory region with anything but highest priority? And if you let PCI subsystem to assign priorities how it will coordinate with ISA subsystem/memory controller what priorities to assign to get meaningful system?
-- Gleb.