1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- Device-tree bindings for persistent memory regions
- -----------------------------------------------------
- Persistent memory refers to a class of memory devices that are:
- a) Usable as main system memory (i.e. cacheable), and
- b) Retain their contents across power failure.
- Given b) it is best to think of persistent memory as a kind of memory mapped
- storage device. To ensure data integrity the operating system needs to manage
- persistent regions separately to the normal memory pool. To aid with that this
- binding provides a standardised interface for discovering where persistent
- memory regions exist inside the physical address space.
- Bindings for the region nodes:
- -----------------------------
- Required properties:
- - compatible = "pmem-region"
- - reg = <base, size>;
- The reg property should specificy an address range that is
- translatable to a system physical address range. This address
- range should be mappable as normal system memory would be
- (i.e cacheable).
- If the reg property contains multiple address ranges
- each address range will be treated as though it was specified
- in a separate device node. Having multiple address ranges in a
- node implies no special relationship between the two ranges.
- Optional properties:
- - Any relevant NUMA assocativity properties for the target platform.
- - volatile; This property indicates that this region is actually
- backed by non-persistent memory. This lets the OS know that it
- may skip the cache flushes required to ensure data is made
- persistent after a write.
- If this property is absent then the OS must assume that the region
- is backed by non-volatile memory.
- Examples:
- --------------------
- /*
- * This node specifies one 4KB region spanning from
- * 0x5000 to 0x5fff that is backed by non-volatile memory.
- */
- pmem@5000 {
- compatible = "pmem-region";
- reg = <0x00005000 0x00001000>;
- };
- /*
- * This node specifies two 4KB regions that are backed by
- * volatile (normal) memory.
- */
- pmem@6000 {
- compatible = "pmem-region";
- reg = < 0x00006000 0x00001000
- 0x00008000 0x00001000 >;
- volatile;
- };
|