История изменений
Исправление hatred, (текущая версия) :
CMA (Contiguous Memory Allocator) может потребоваться устройствам, точнее драйверам, для организации DMA трансферов, в том случае, если устройство (конкретный аппаратный блок) не умеет в Scatter-Gather (SG) режим и требует непрерывный блок физической памяти для чтения или записи.
В Scatter-Gather режиме трансфер делится на блоки и можно их насобирать из кусков физической памяти.
В общем, если выключишь, сама система не должна загнуться, но если что-то очень хочет непрерывных блоков памяти больше одной страницы, то оно работать перестанет.
ЗЫ у нас на проекте активно используется в связке u-dma-buf, просто по причине того, что FPGA IP требуют меньше ресурсов, когда не используется SG. Проект на базе Xilinx ZynqMP (к вопросу, откуда взялся FPGA в одном адресном пространстве с CPU)
ЗЗЫ а ещё оно ломает выводы free, top и так далее. Т.е. размер CMA не вычитывается из общего размера доступной памяти. Система может думать, что памяти валом, а памяти нет. OOM Killer при этом может сработать, но системе уже будет плохо.
Исходная версия hatred, :
CMA может потребоваться устройствам, точнее драйверам, для организации DMA трансферов, в том случае, если устройство (конкретный аппаратный блок) не умеет в Scatter-Gather (SG) режим и требует непрерывный блок физической памяти для чтения или записи.
В Scatter-Gather режиме трансфер делится на блоки и можно их насобирать из кусков физической памяти.
В общем, если выключишь, сама система не должна загнуться, но если что-то очень хочет непрерывных блоков памяти больше одной страницы, то оно работать перестанет.
ЗЫ у нас на проекте активно используется в связке u-dma-buf, просто по причине того, что FPGA IP требуют меньше ресурсов, когда не используется SG. Проект на базе Xilinx ZynqMP (к вопросу, откуда взялся FPGA в одном адресном пространстве с CPU)