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