Sto eseguendo il porting/debug di un driver di periferica (utilizzato da un altro modulo del kernel) e di fronte a un vicolo cieco perché dma_sync_single_for_device() fallisce con un kernel oops.Dove iniziare a conoscere Linux DMA/driver di periferica/allocazione di memoria
Non ho idea di cosa dovrebbe fare questa funzione e googling non è di grande aiuto, quindi probabilmente ho bisogno di saperne di più su questa roba in totale.
La domanda è, da dove cominciare?
Oh sì, nel caso in cui è rilevante, si suppone il codice per l'esecuzione su un PowerPC (e Linux è OpenWRT)
EDIT: risorse on-line preferibile (libri prendono un paio di giorni da consegnare :)
Potrebbe essere utile avere il traceback oops (in forma simbolica). Questo non dovrebbe accadere, come probabilmente avete indovinato. Il motivo più probabile è che viene chiamato due volte nella stessa regione DMA. –
In realtà, penso che avrò una nuova domanda su questo (poiché il problema si verifica con 2.6.30.10, ma non su 2.6.23) – Kimvais