Revision 7075ba30 docs/memory.txt
b/docs/memory.txt | ||
---|---|---|
15 | 15 |
- setting up coalesced memory for kvm |
16 | 16 |
- setting up ioeventfd regions for kvm |
17 | 17 |
|
18 |
Memory is modelled as an tree (really acyclic graph) of MemoryRegion objects.
|
|
18 |
Memory is modelled as a tree (really acyclic graph) of MemoryRegion objects. |
|
19 | 19 |
The root of the tree is memory as seen from the CPU's viewpoint (the system |
20 | 20 |
bus). Nodes in the tree represent other buses, memory controllers, and |
21 | 21 |
memory regions that have been rerouted. Leaves are RAM and MMIO regions. |
... | ... | |
87 | 87 |
descending priority order |
88 | 88 |
- if the address lies outside the region offset/size, the subregion is |
89 | 89 |
discarded |
90 |
- if the subregion is a leaf (RAM or MMIO), the seach terminates |
|
90 |
- if the subregion is a leaf (RAM or MMIO), the search terminates
|
|
91 | 91 |
- if the subregion is a container, the same algorithm is used within the |
92 | 92 |
subregion (after the address is adjusted by the subregion offset) |
93 | 93 |
- if the subregion is an alias, the search is continues at the alias target |
... | ... | |
128 | 128 |
4GB of memory. |
129 | 129 |
|
130 | 130 |
The memory controller diverts addresses in the range 640K-768K to the PCI |
131 |
address space. This is modeled using the "vga-window" alias, mapped at a |
|
131 |
address space. This is modelled using the "vga-window" alias, mapped at a
|
|
132 | 132 |
higher priority so it obscures the RAM at the same addresses. The vga window |
133 | 133 |
can be removed by programming the memory controller; this is modelled by |
134 | 134 |
removing the alias and exposing the RAM underneath. |
... | ... | |
164 | 164 |
- .impl.min_access_size, .impl.max_access_size define the access sizes |
165 | 165 |
(in bytes) supported by the *implementation*; other access sizes will be |
166 | 166 |
emulated using the ones available. For example a 4-byte write will be |
167 |
emulated using four 1-byte write, is .impl.max_access_size = 1.
|
|
167 |
emulated using four 1-byte write, if .impl.max_access_size = 1.
|
|
168 | 168 |
- .impl.valid specifies that the *implementation* only supports unaligned |
169 | 169 |
accesses; unaligned accesses will be emulated by two aligned accesses. |
170 | 170 |
- .old_portio and .old_mmio can be used to ease porting from code using |
Also available in: Unified diff