On 24/04/2015 12:22, Catalin Vasile wrote: > > > Does a physical memory address in a guest points to the same memory as > > > qemu? > > > For example: if I have a physical pointer 0x34 in the guest, does it > > > point to the same location that qemu points with 0x34 address? > > > > No. QEMU converts guest pointers (which are just uint64_t) to host > > pointers using address_space_map/address_space_unmap. > > That being said. Does a message that passes from guest to a backend > need to pass through qemu everytime? > I'm trying to understand how virtio virtqueues work. Namely I'm trying > to pass as data itself a pointer in which the backend will write, > namely use copy_to_user() if the backend is a kernel module.
vhost provides the infrastructure to do the same thing as address_space_map/unmap. Passing pointers inside a data buffer would be very weird for virtio devices. The way you do it typically, is that you pass a one descriptor corresponding to a request or response header, and one or more descriptors for the data buffers. Paolo