Lines Matching +full:in +full:- +full:memory

1 .. SPDX-License-Identifier: GPL-2.0
19 * BIOS/EFI create the system memory map (EFI Memory Map, E820, etc)
24 static memory map configuration. More detail on these tables can be found
29 on physical memory region size and alignment, memory holes, HDM interleave,
39 When this is enabled, this bit tells linux to defer management of a memory
40 region to a driver (in this case, the CXL driver). Otherwise, the memory is
41 treated as "normal memory", and is exposed to the page allocator during
45 ---------------------
60 Memory Attribute` field. This may be called something else on your platform.
62 :code:`uefisettings get "CXL Memory Attribute"` ::
67 name: "CXL Memory Attribute",
72 Physical Memory Map
76 ---------------------------------
78 As of Linux v6.14, the hotplug memory system requires memory regions to be
79 uniform in size and alignment. While the CXL specification allows for memory
80 regions as small as 256MB, the supported memory block size and alignment for
81 hotplugged memory is architecture-defined.
83 A Linux memory blocks may be as small as 128MB and increase in powers of two.
90 For best support across versions, platform vendors should place CXL memory at
92 prevent the creating thousands of memory devices (one per block).
94 Memory Holes
95 ------------
97 Holes in the memory map are tricky. Consider a 4GB device located at base
98 address 0x100000000, but with the following memory map ::
100 ---------------------
104 ---------------------
106 | MEMORY HOLE |
108 ---------------------
112 ---------------------
117 * memory block alignment.
119 If your architecture requires 2GB uniform size and aligned memory blocks, the
121 from `0x100000000-0x180000000`. The remaining capacity will be stranded, as
124 Assuming your architecture and memory configuration allows 1GB memory blocks,
125 this memory map is supported and this should be presented as multiple CFMWS
126 in the CEDT that describe each side of the memory hole separately - along with
129 Multiple decoders can (and should) be used to manage such a memory hole (see
130 below), but each chunk of a memory hole should be aligned to a reasonable block
131 size (larger alignment is always better). If you intend to have memory holes
132 in the memory map, expect to use one decoder per contiguous chunk of host
133 physical memory.
135 As of v6.14, Linux does provide support for memory hotplug of multiple
136 physical memory regions separated by a memory hole described by a single
150 -----------------
153 All other decoders in the fabric are intended to route accesses without
160 - Implementation Note: CXL Host Bridge and Upstream Switch Port Decoder Flow
161 - Implementation Note: Device Decoder Logic
167 Due to some ambiguity in how Architecture, ACPI, PCI, and CXL specifications
169 attempted to do translation at the originating memory controller or host
171 driver and is not officially endorsed - despite being supported.
177 ----------------------------------------
178 If providing cross-host-bridge interleave, a CFMWS entry in the :doc:`CEDT
179 <acpi/cedt>` must be presented with target host-bridges for the interleaved
182 If providing intra-host-bridge interleaving, only 1 CFMWS entry in the CEDT is
183 required for that host bridge - if it covers the entire capacity of the devices
186 If intending to provide users flexibility in programming decoders beyond the
187 root, you may want to provide multiple CFMWS entries in the CEDT intended for
196 memory regions in the :doc:`SRAT <acpi/srat>` to determine the number of
200 a matching SRAT entry does not exist; however, this is not guaranteed in the
203 Memory Holes
204 ------------
205 If your platform includes memory holes intersparsed between your CXL memory, it
206 is recommended to utilize multiple decoders to cover these regions of memory,
210 For example, consider the Memory Hole described above ::
212 ---------------------
216 ---------------------
218 | MEMORY HOLE |
220 ---------------------
224 ---------------------
229 ----------------------- -----------------------
230 | root-decoder-0 | | root-decoder-1 |
233 ----------------------- -----------------------
235 ----------------------- -----------------------
236 | HB-decoder-0 | | HB-decoder-1 |
239 ----------------------- -----------------------
241 ----------------------- -----------------------
242 | ep-decoder-0 | | ep-decoder-1 |
245 ----------------------- -----------------------
249 Linux makes no guarantee of support for strange memory hole situations.
251 Multi-Media Devices
252 -------------------
254 the described memory region allows volatile or persistent memory (or both). If
258 2) Using a persistent memory device as normal memory
261 memory, with the intent of allowing the end user flexibility in how that memory
262 is configured. Linux does not presently have strong requirements in this area.