I was thinking of the following system: Allocate a fifo for userspace, map the fifo, map the fifo registers into userspace. These allocations are therefore pinned, so something to avoid memory fragmentation has to be done.
Userspace library fills up an entire fifo, minus a few essential things i will mention later. Userspace does ioctl with all the bo's it'll need for the fifo. Kernel pins all these bo's, creates several dma objects that covers only a single bo (as a form of memory protection). Kernel sends back a list of these object handles + a list of ref_cnt values that have to inserted after the bo usage is done. Userspace fills in the remaining values and fires the fifo. Later, under memory pressure for example, the memory manager checks which bo's can be unpinned. So you'll still need an ioctl, but you do avoid a copy into kernel space, which might hurt for stuff like hostdata transfers. As usual, comment is appreciated. Maarten. _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
