mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
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; |
|
}; |
|
|
|
|