source: mainline/kernel/doc/mm@ ba2be23

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since ba2be23 was e2a0d76, checked in by Martin Decky <martin@…>, 12 years ago

cstyle

  • Property mode set to 100644
File size: 3.3 KB
Line 
1Memory management
2=================
3
41. Virtual Address Translation
5
61.1 Hierarchical 4-level per address space page tables
7
8SPARTAN kernel deploys generic interface for 4-level page tables for these
9architectures: amd64, arm32, ia32, mips32 and ppc32. In this setting, page
10tables are hierarchical and are not shared by address spaces (i.e. one set of
11page tables per address space).
12
13
14 VADDR
15 +-----------------------------------------------------------------------------+
16 | PTL0_INDEX | PTL1_INDEX | PTL2_INDEX | PTL3_INDEX | OFFSET |
17 +-----------------------------------------------------------------------------+
18
19
20 PTL0 PTL1 PTL2 PTL3
21 +--------+ +--------+ +--------+ +--------+
22 | | | | | PTL3 | -----\ | |
23 | | | | +--------+ | | |
24 | | +--------+ | | | | |
25 | | | PTL2 | -----\ | | | | |
26 | | +--------+ | | | | | |
27 | | | | | | | | +--------+
28 +--------+ | | | | | | | FRAME |
29 | PTL1 | -----\ | | | | | | +--------+
30 +--------+ | | | | | | | | |
31 | | | | | | | | | | |
32 | | | | | | | | | | |
33 +--------+ \----> +--------+ \----> +--------+ \----> +--------+
34 ^
35 |
36 |
37 +--------+
38 | PTL0 |
39 +--------+
40
41
42PTL0 Page Table Level 0 (Page Directory)
43PTL1 Page Table Level 1
44PTL2 Page Table Level 2
45PTL3 Page Table Level 3
46
47PTL0_INDEX Index into PTL0
48PTL1_INDEX Index into PTL1
49PTL2_INDEX Index into PTL2
50PTL3_INDEX Index into PTL3
51
52VADDR Virtual address for which mapping is looked up
53FRAME Physical address of memory frame to which VADDR is mapped
54
55
56On architectures whose hardware has fewer levels, PTL2 and, if need be, PTL1 are
57left out. TLB-only architectures are to define custom format for software page
58tables.
59
601.2 Single global page hash table
61
62Generic page hash table interface is deployed on 64-bit architectures without
63implied hardware support for hierarchical page tables, i.e. ia64 and sparc64.
64There is only one global page hash table in the system shared by all address
65spaces.
66
67
682. Memory allocators
69
702.1 General allocator
71
72'malloc' function accepts flags as a second argument. The flags are directly
73passed to the underlying frame_alloc function.
74
751) If the flags parameter contains FRAME_ATOMIC, the allocator will not sleep.
76 The allocator CAN return NULL, when memory is not directly available.
77 The caller MUST check if NULL was not returned
78
792) If the flags parameter does not contain FRAME_ATOMIC, the allocator
80 will never return NULL, but it CAN sleep indefinitely. The caller
81 does not have to check the return value.
82
833) The maximum size that can be allocated using malloc is 256K
84
85Rules 1) and 2) apply to slab_alloc as well. Using SLAB allocator
86to allocate too large values is not recommended.
87
Note: See TracBrowser for help on using the repository browser.