On Wed, Dec 21, 2011 at 9:30 PM, Avi Kivity <a...@redhat.com> wrote: > On 12/21/2011 02:09 PM, Zhi Yong Wu wrote: >> HI, >> >> For memory management, i have several questions as below: >> >> 1.) Why is subpage introduced? what is its goal? > > A TLB entry spans one page; a subpage is a way of dispatching accesses > through that tlb entry to various memory regions. thanks. > >> 2.) How to render MemoryRegion into one disjoint flatrange list? That >> rendering function is a bit difficult to understand. Can anyone simply >> explain it? > > What exactly don't you understand? 1.) e.g. some fields such as offset_in_region, terminates, offset in MemoryRegion struct. What are separately their meanings? 2.) render_memory_region(), how does it render one MemoryRegion into the global view flatview? Can you simply explain this function's algorithm logic?
> >> >> 3.) What are separately the meanings of these flags? such as >> IO_MEM_RAM, IO_MEM_ROM, IO_MEM_UNASSIGNED, IO_MEM_*, IO_MEM_ROMD, and >> IO_MEM_SUBPAGE. > > RAM = RAM > ROM = ROM > UNASSIGNED = nothing handles this range > ROMD = ROM when read, device (i.e. callbacks) when written > SUBPAGE = dispatch using the lower address bits to obtain final I/O handler. thanks. By the way, if you are available, can you simply explain what is the relationship among them and how they work together? such as MemoryRegion, RamBlock, PhysPageDesc, and MemorySlot. > > -- > error compiling committee.c: too many arguments to function > -- Regards, Zhi Yong Wu