Re: can device drivers return non-ram via vm_ops->nopage?

From: Jaroslav Kysela
Date: Sun Mar 21 2004 - 05:45:51 EST


On Sat, 20 Mar 2004, Russell King wrote:

> The issues are:
>
> 1. ALSA wants to mmap the buffer used to transfer data to/from the
> card into user space. This buffer may be direct-mapped RAM,
> memory allocated via dma_alloc_coherent(), an on-device buffer,
> or anything else.

We don't require to remap the mmio ring buffer (actually only RME32 has
a PCI memory window with the ring buffer, but this driver uses
memcpy_(to|from)io already). So, we need to remap RAM and DMA pages
(should be special RAM also) only.

> The user space mapping must likewise be DMA-coherent.
>
> Currently, ALSA just does virt_to_page() on whatever address it
> feels like in its nopage() function, which is obviously not
> acceptable for two out of the three specific cases above.

Yes.

> 2. ALSA wants to _coherently_ share data between the kernel-side
> drivers, and user space ALSA library, mainly the DMA buffer
> head/tail pointers so both kernel space and user space knows
> when the buffer is full/empty.

Yes.

Jaroslav

-----
Jaroslav Kysela <perex@xxxxxxx>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/