title: Where to start learning about linux DMA / device drivers / memory allocation
body: <p>I'm porting / debugging a device driver (that is used by another kernel module) and facing a dead end because dma_sync_single_for_device() fails with an kernel oops.</p>
  
  <p>I have no clue what that function is supposed to do and googling does not really help, so I probably need to learn more about this stuff in total.</p>
  
  <p>The question is, where to start?</p>
  
  <p>Oh yeah, in case it is relevant, the code is supposed to run on a PowerPC (and the linux is OpenWRT)</p>
  
  <p>EDIT:
  On-line resources preferrable (books take a few days to be delivered :)</p>