Problems with DMA on Genode+NOVA

Christian Menard Christian.Menard at ...250...
Mon Jul 7 12:29:00 CEST 2014


Hi all,

I'm trying to run Genode+NOVA on a Panasonic Toughpad FZ-M1. I'm new to Genode 
but thanks to documentation and good coding style I came along pretty good so 
far. However, I ran into a problem with DMA.

I tried to run the AHCI driver, but whenever the driver issued the first SATA-
command, the hardware failed because it was not able to read from the specified 
DMA address. After I enabled IOMMU by adding 'pci_device_pd' to my modules, I 
got the message "[init -> acpi -> pci_drv -> oci_device_pd] attachment of DMA 
memory @ cb48c000+1000 failed". 

I investigated more into the memory allocation process. As far as I understand 
it, the method 'alloc_dma_buffer' of the PCI session first allocates a dataspace 
in physical memory. Then it tries to attach this dataspace as a region to the 
driver's virtual address space. Thereby it enforces the virtual address to be 
equal to the physical address. So the allocator  searches for a free block 
that contains that virtual address. But in my case it doesn't find a free 
block.

Do you have any ideas on how to resolve this issue? What I don't understand is 
why physical and virtual address of the dma buffer should be equal. Shouldn't 
there by some mechanism that ensures that there is a free block that contains 
the DMA address before the DMA buffer is allocated in physical memory?

Tell me if you need any specification on the device. I would like to print the 
full Log here, but unfortunately I have no serial interface, I am only able to 
use a vga console.

Thanks
Christian 




More information about the users mailing list