Onde começar a aprender sobre DMA Linux / drivers de dispositivo / alocação de memória

Estou portando / depurando um driver de dispositivo (que é usado por outro módulo do kernel) e estou enfrentando um beco sem saída porque dma_sync_single_for_device () falha com um kernel oops.

Eu não tenho idéia do que essa função deve fazer e pesquisar no Google realmente não ajuda, então eu provavelmente preciso aprender mais sobre essas coisas no total.

A questão é: por onde começar?

Ah, sim, caso seja relevante, o código deve ser executado em um PowerPC (e o linux é OpenWRT)

EDIT: Recursos on-line preferíveis (os livros demoram alguns dias para serem entregues :)

questionAnswers(3)

yourAnswerToTheQuestion