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