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