Erweitern des 4-MB-Limits des Kernels für Speicherzuweisungen mithilfe der DMA-API – dma_alloc_coherent

Erweitern des 4-MB-Limits des Kernels für Speicherzuweisungen mithilfe der DMA-API – dma_alloc_coherent

Ich verwende Ubuntu 16.04 und möchte mit dma_alloc_coherent einen DMA-Puffer (nicht zwischengespeichert) zuweisen, der größer als 4 MB ist. Wenn ich dies versuche, gibt der Aufruf NULL zurück. Ich habe die Kernel-Flags CONFIG_DMA_CMA usw. ausprobiert, um die Zuweisung über den Contiguous Memory Allocator zu aktivieren. Ich sehe, dass der CMA-Speicher reserviert wird, und ich sehe, dass der cma_allocator den Speicher zuweist, aber ich komme trotzdem nicht über 4 MB hinaus, obwohl der Speicher über den CMA-Allocator für meinen Treiber reserviert wurde.

Antwort1

CONFIG_DMA_CMA ist ein Kernel-Kompilierungsflag. Es sei denn, Sie wissen, dass Ihr Kernel damit kompiliert wurde. Andernfalls benötigen Sie einen angepassten Kernel. Es scheint, dass die Hauptversionen von RHEL und Ubuntu diese Option nicht aktivieren.

verwandte Informationen