LINUX.ORG.RU

Сообщения aerosmith

 

PCI - выделение DMA памяти

Возникла следующая проблема. PCI устройство функционирует в нескольких режимах. В одном из режимов, драйверу для работы с устройством необходим DMA буфер размером 8Мб. Для выделения буфера использую pci_alloc_consistent (целевое ядро 2.6.32, x86_64). Максимальный объём непрерывной физической памяти, который получается выделить подобным путём - 4Мб (ни страницей больше!!!). Копаясь в исходиках ядра, удалось найти константу, которая задаёт макс. размер памяти, который возможно выделить подобным путём - MAX_ORDER: http://lxr.free-electrons.com/source/include/linux/mmzone.h?v=2.6.32#L24

#define MAX_ORDER 11

Это означает что можно выделить до 8Мб (PAGE_SIZE == 4096 == 2^12 -> 2^12 * 2^11 == 2^23 == 8Mb).

Собственно вопрос - почему 4Мб это максимальный объём DMA памяти, который я могу выделить для PCI устройства?

aerosmith
()

RSS подписка на новые темы