Выделение более 4 МБ закрепленной непрерывной памяти в ядре Linux

Для некоторого взаимодействия с строящимся устройством PCI, мы хотели бы создать большие непрерывные участки памяти, к которым плата может получить доступ. На данный момент самый большой кусок памяти, который мне удалось выделить, составляет 4 мегабайта. Мне интересно, есть ли какие-либо методы для создания более крупных регионов.

Я знаю, что могу использовать параметр загрузки mem = , чтобы сделать это, но по причинам numa я бы предпочел не идти этот маршрут. С другой стороны, если бы кто-то знал способ сделать это, но распределил бы его по узлам numa, это было бы хорошо.

Как я сказал вначале, в настоящее время я ограничен 4 мегабайтами. Распределение в настоящее время выполняется __ alloc_pages , который ограничен MAX_ORDER . MAX_ORDER - это константа времени компиляции, и меня также беспокоит, что ее редактирование может повлиять на другие места.

Спасибо.

19
задан Bill Lynch 9 May 2011 в 17:02
поделиться