On 07-03-23, 11:22, Stefan Hajnoczi wrote:
VHOST_USER_IOTLB_MSG probably isn't necessary because address translation is not required. It will also reduce performance by adding extra communication.
Instead, you could change the 1 memory region : 1 mmap relationship that existing non-Xen vhost-user back-end implementations have. In Xen vhost-user back-ends, the memory region details (including the file descriptor and Xen domain id) would be stashed away in back-end when the front-end adds memory regions. No mmap would be performed upon VHOST_USER_ADD_MEM_REG or VHOST_USER_SET_MEM_TABLE.
Whenever the back-end needs to do DMA, it looks up the memory region and performs the mmap + Xen-specific calls:
- A long-lived mmap of the vring is set up when VHOST_USER_SET_VRING_ENABLE is received.
- Short-lived mmaps of the indirect descriptors and memory pointed to by the descriptors is set up by the virtqueue processing code.
Does this sound workable to you?
Sounds good. I have sent a proposal (v3) based on that now.