Centos 8 (ядро 4.18): макс. размер для dma_alloc_coherent - PullRequest
0 голосов
/ 14 октября 2019

В centos8.0.1905 (ядро 4.18) я изменил конфигурацию ядра на: CONFIG_CMA = y, CONFIG_DMA_CMA = y В параметры загрузки ядра я добавил: cma = 64M @ 512M

В моем драйвере устройства я должен выделить64 МБ физически непрерывного буфера для прямого доступа к памяти. Я попытался позвонить:

dma_addr_t dma_handle;void * p = dma_alloc_coherent (pDev, BUF_SIZE, & dma_handle, GFP_KERNEL)

Но макс. размер BUS_SIZE, для которого я получил p! = 0, равен 0x400000 (4 МБ). Не могли бы вы объяснить, что я делаю не так?

Заранее спасибо, Звика

1 Ответ

0 голосов
/ 22 октября 2019

In перекомпилировал ядро ​​с CONFIG_CMA = y, CONFIG_DMA_CMA = y и загрузил это ядро ​​с помощью cma = 512M

В драйвере устройства перед вызовом dma_alloc_coherent Я вызвал rc = dma_set_mask_and_coherent(pPciDev, DMA_BIT_MASK (64));и проверил, что rc = 0.

Спасибо, Звика

...