С чего начать изучение linux DMA / драйверов устройств / распределения памяти

Я портирую / отлаживаю драйвер устройства (который используется другим модулем ядра) и захожу в тупик, потому что dma_sync_single_for_device () завершается с ошибкой ядра.

Я понятия не имею, что должна делать эта функция, и поиск в Google не очень помогает, поэтому мне, вероятно, нужно больше узнать об этом.

Вопрос в том, с чего начать?

Ах да, в случае, если это уместно, код должен работать на PowerPC (а Linux - OpenWRT)

РЕДАКТИРОВАТЬ: онлайн ресурсы предпочтительнее (книги занимают несколько дней, чтобы доставить :)

Ответы на вопрос(3)

Ваш ответ на вопрос