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.