Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) Device-tree bindings for persistent memory regions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) -----------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) Persistent memory refers to a class of memory devices that are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 	a) Usable as main system memory (i.e. cacheable), and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 	b) Retain their contents across power failure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) Given b) it is best to think of persistent memory as a kind of memory mapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) storage device. To ensure data integrity the operating system needs to manage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) persistent regions separately to the normal memory pool. To aid with that this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) binding provides a standardised interface for discovering where persistent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) memory regions exist inside the physical address space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Bindings for the region nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) -----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	- compatible = "pmem-region"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	- reg = <base, size>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 		The reg property should specificy an address range that is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 		translatable to a system physical address range. This address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 		range should be mappable as normal system memory would be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 		(i.e cacheable).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 		If the reg property contains multiple address ranges
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 		each address range will be treated as though it was specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 		in a separate device node. Having multiple address ranges in a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 		node implies no special relationship between the two ranges.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	- Any relevant NUMA assocativity properties for the target platform.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	- volatile; This property indicates that this region is actually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	  backed by non-persistent memory. This lets the OS know that it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	  may skip the cache flushes required to ensure data is made
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	  persistent after a write.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	  If this property is absent then the OS must assume that the region
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	  is backed by non-volatile memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) Examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) --------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	 * This node specifies one 4KB region spanning from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	 * 0x5000 to 0x5fff that is backed by non-volatile memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	pmem@5000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 		compatible = "pmem-region";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 		reg = <0x00005000 0x00001000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	 * This node specifies two 4KB regions that are backed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	 * volatile (normal) memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	pmem@6000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 		compatible = "pmem-region";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 		reg = < 0x00006000 0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 			0x00008000 0x00001000 >;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 		volatile;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)