Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

Ion Memory Manager

Ion is a memory manager that allows for sharing of buffers via dma-buf.
Ion allows for different types of allocation via an abstraction called
a 'heap'. A heap represents a specific type of memory. Each heap has
a different type. There can be multiple instances of the same heap
type.

Specific heap instances are tied to heap IDs. Heap IDs are not to be specified
in the devicetree.

Required properties for Ion

- compatible: "linux,ion" PLUS a compatible property for the device

All child nodes of a linux,ion node are interpreted as heaps

required properties for heaps

- compatible: compatible string for a heap type PLUS a compatible property
for the specific instance of the heap. Current heap types
-- linux,ion-heap-system
-- linux,ion-heap-system-contig
-- linux,ion-heap-carveout
-- linux,ion-heap-chunk
-- linux,ion-heap-dma
-- linux,ion-heap-custom

Optional properties
- memory-region: A phandle to a memory region. Required for DMA heap type
(see reserved-memory.txt for details on the reservation)

Example:

	ion {
		compatbile = "hisilicon,ion", "linux,ion";

		ion-system-heap {
			compatbile = "hisilicon,system-heap", "linux,ion-heap-system"
		};

		ion-camera-region {
			compatible = "hisilicon,camera-heap", "linux,ion-heap-dma"
			memory-region = <&camera_region>;
		};

		ion-fb-region {
			compatbile = "hisilicon,fb-heap", "linux,ion-heap-dma"
			memory-region = <&fb_region>;
		};
	}