On Thu, Jan 14, 2021 at 6:01 AM Rob Herring robh@kernel.org wrote:
On Tue, Jan 12, 2021 at 05:21:42PM -0800, Minchan Kim wrote:
From: Hyesoo Yu hyesoo.yu@samsung.com
Document devicetree binding for chunk cma heap on dma heap framework.
The DMA chunk heap supports the bulk allocation of higher order pages.
Why do we need this? What does this do that CMA doesn't?
With a CMA area I can believe a carve out is a common, OS independent thing. This looks too closely tied to some Linux thing to go into DT.
Hello Rob,
Thank you for the review!
The chunk heap's allocator also allocates from the CMA area. It is, however, optimized to perform bulk allocation of higher order pages in an efficient manner. For this purpose, the heap needs an exclusive CMA area that will only be used for allocation by the heap. This is the reason why we need to use the DT to create and configure a reserved memory region for use by the chunk CMA heap driver. Since all allocation from DMA-BUF heaps happen from the user-space, there is no other appropriate device-driver that we can use to register the chunk CMA heap and configure the reserved memory region for its use.
We have been following your guidance in [1] to bind the chunk CMA heap driver directly to the reserved_memory region it will allocate from. Is there an alternative that we are missing Rob?
[1]: https://lore.kernel.org/lkml/20191025225009.50305-2-john.stultz@linaro.org/T...
The use-case that we have for the heap currently will allocate memory from it from userspace and use the allocated memory to optimize 4K/8K HDR video playback with a secure DRM HW pipeline.
Thank you for all the help and review :)
Regards, Hridya
Signed-off-by: Hyesoo Yu hyesoo.yu@samsung.com Signed-off-by: Minchan Kim minchan@kernel.org Signed-off-by: Hridya Valsaraju hridya@google.com Change-Id: I8fb231e5a8360e2d8f65947e155b12aa664dde01
Drop this.
.../reserved-memory/dma_heap_chunk.yaml | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Documentation/devicetree/bindings/reserved-memory/dma_heap_chunk.yaml
diff --git a/Documentation/devicetree/bindings/reserved-memory/dma_heap_chunk.yaml b/Documentation/devicetree/bindings/reserved-memory/dma_heap_chunk.yaml new file mode 100644 index 000000000000..3e7fed5fb006 --- /dev/null +++ b/Documentation/devicetree/bindings/reserved-memory/dma_heap_chunk.yaml @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reserved-memory/dma_heap_chunk.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml#
+title: Device tree binding for chunk heap on DMA HEAP FRAMEWORK
+description: |
- The DMA chunk heap is backed by the Contiguous Memory Allocator (CMA) and
- supports bulk allocation of fixed size pages.
+maintainers:
- Hyesoo Yu hyesoo.yu@samsung.com
- John Stultz john.stultz@linaro.org
- Minchan Kim minchan@kernel.org
- Hridya Valsarajuhridya@google.com
space ^
+properties:
- compatible:
- enum:
- dma_heap,chunk
The format is <vendor>,<something> and 'dma_heap' is not a vendor.
- chunk-order:
- description: |
order of pages that will get allocated from the chunk DMA heap.
- maxItems: 1
- size:
- maxItems: 1
- alignment:
- maxItems: 1
+required:
- compatible
- size
- alignment
- chunk-order
+additionalProperties: false
+examples:
- |
- reserved-memory {
#address-cells = <2>;
#size-cells = <1>;
chunk_memory: chunk_memory {
compatible = "dma_heap,chunk";
size = <0x3000000>;
alignment = <0x0 0x00010000>;
chunk-order = <4>;
};
- };
-- 2.30.0.284.gd98b1dd5eaa7-goog