On Thu, Feb 27, 2020 at 11:12:02AM +0100, David Hildenbrand wrote: > +static void qemu_vfio_dma_map_resize(QEMUVFIOState *s, void *host, > + size_t old_size, size_t new_size) > +{ > + IOVAMapping *m; > + int index = 0; > + > + qemu_mutex_lock(&s->lock); > + m = qemu_vfio_find_mapping(s, host, &index); > + if (!m) { > + return; > + } > + assert(m->size == old_size); > + > + /* Note: Not atomic - we need a new ioctl for that. */ > + qemu_vfio_undo_mapping(s, m->iova, m->size); > + qemu_vfio_do_mapping(s, host, m->iova, new_size);
Another way to ask my previous question 1 (in the other reply): Can we simply map/unmap the extra, while keep the shared untouched? Thanks, > + > + m->size = new_size; > + assert(qemu_vfio_verify_mappings(s)); > + > + qemu_mutex_unlock(&s->lock); > +} -- Peter Xu