Question regarding Virtio Console and Remoteproc

Amit Shah
Tue, 05 Jun 2012 09:43:55 -0000

Hi Sjur,

On (Fri) 01 Jun 2012 [09:31:30], Sjur BRENDELAND wrote:
> Hi Amit and Rusty,
>
> I've been looking into the possibility of using the Virtio Console
> Driver together with the remoteproc framework to communicate with
> ST-Ericsson modem over shared memory.
>
> It seems like Virtio Console would be a good fit, except for a issue
> with buffer allocation. Due to HW limitations the STE-Modem cannot
> access kernel memory (no IOMMU and limited address range). Instead
> we have a designated shared memory region used for IPC.
>
> Due to this I cannot use kmalloc() for buffer allocation, but I
> have to allocate buffers from the memory region shared with the
> modem.
>
> In remoteproc this is solved by using dma_alloc_coherent() for all
> memory to be shared with the modem. This works fine for me, because
> I can pass the IPC memory region to dma_declare_coherent_memory()
> so dma_alloc_coherent() will allocate from this memory region.
>
> I think I can solve this issue in Virtio Console by changing calls
> to kmalloc() to something like:
>
> 	if (virtio_has_feature(vdev, VIRTIO_CONSOLE_USE_DMA_MEM)) {
> 		dma_addr_t dma;
> 		buf = dma_alloc_coherent(dev, size, &dma, GFP_KERNEL);
> 	} else
> 		buf = kmalloc(count, GFP_KERNEL);
>
> I'd like to get the opinion from you virtualization folks on this!
> If you think it looks reasonable I might start cooking some patches...

I don't have a problem with this.

Thanks,
		Amit