I'm prototyping a device driver that is backed by a userspace process (server) instead of a physical device. When a user process (client) submits an I/O, I want the server to have access to that memory. I've tried pinning the client pages (get_user_pages_fast) and inserting them in the server's VM (with vm_insert_page while serving an mmap call from this context). This works if the client allocated memory with MAP_SHARED. If not, vm_insert_page fails with EINVAL (probably because the client's page has PageAnon=1 set). A real device would have access to this memory. Is there a way to make a virtual device (my server, implemented in a separate userspace context) have access to it? PS. I haven't managed to register to the list so please CC me to your replies