[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GIT PULL 18/18] virtio-mem: Mark memslot alias memory regions unmergeab
|
From: |
David Hildenbrand |
|
Subject: |
[GIT PULL 18/18] virtio-mem: Mark memslot alias memory regions unmergeable |
|
Date: |
Thu, 12 Oct 2023 16:36:55 +0200 |
Let's mark the memslot alias memory regions as unmergable, such that
flatview and vhost won't merge adjacent memory region aliases and we can
atomically map/unmap individual aliases without affecting adjacent
alias memory regions.
This handles vhost and vfio in multiple-memslot mode correctly (which do
not support atomic memslot updates) and avoids the temporary removal of
large memslots, which can be an expensive operation. For example, vfio
might have to unpin + repin a lot of memory, which is undesired.
Message-ID: <20230926185738.277351-19-david@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
hw/virtio/virtio-mem.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c
index e1e4250e69..9dc3c61b5a 100644
--- a/hw/virtio/virtio-mem.c
+++ b/hw/virtio/virtio-mem.c
@@ -940,6 +940,12 @@ static void virtio_mem_prepare_memslots(VirtIOMEM *vmem)
memory_region_init_alias(&vmem->memslots[idx], OBJECT(vmem), name,
&vmem->memdev->mr, memslot_offset,
memslot_size);
+ /*
+ * We want to be able to atomically and efficiently activate/deactivate
+ * individual memslots without affecting adjacent memslots in memory
+ * notifiers.
+ */
+ memory_region_set_unmergeable(&vmem->memslots[idx], true);
}
}
--
2.41.0
- [GIT PULL 05/18] vhost: Return number of free memslots, (continued)
- [GIT PULL 05/18] vhost: Return number of free memslots, David Hildenbrand, 2023/10/12
- [GIT PULL 06/18] memory-device: Support memory devices with multiple memslots, David Hildenbrand, 2023/10/12
- [GIT PULL 08/18] memory-device: Track required and actually used memslots in DeviceMemoryState, David Hildenbrand, 2023/10/12
- [GIT PULL 09/18] memory-device, vhost: Support memory devices that dynamically consume memslots, David Hildenbrand, 2023/10/12
- [GIT PULL 11/18] vhost: Add vhost_get_max_memslots(), David Hildenbrand, 2023/10/12
- [GIT PULL 02/18] vhost: Remove vhost_backend_can_merge() callback, David Hildenbrand, 2023/10/12
- [GIT PULL 01/18] vhost: Rework memslot filtering and fix "used_memslot" tracking, David Hildenbrand, 2023/10/12
- [GIT PULL 15/18] virtio-mem: Update state to match bitmap as soon as it's been migrated, David Hildenbrand, 2023/10/12
- [GIT PULL 14/18] virtio-mem: Pass non-const VirtIOMEM via virtio_mem_range_cb, David Hildenbrand, 2023/10/12
- [GIT PULL 04/18] kvm: Return number of free memslots, David Hildenbrand, 2023/10/12
- [GIT PULL 18/18] virtio-mem: Mark memslot alias memory regions unmergeable,
David Hildenbrand <=
- [GIT PULL 17/18] memory, vhost: Allow for marking memory device memory regions unmergeable, David Hildenbrand, 2023/10/12
- [GIT PULL 16/18] virtio-mem: Expose device memory dynamically via multiple memslots if enabled, David Hildenbrand, 2023/10/12
- [GIT PULL 10/18] kvm: Add stub for kvm_get_max_memslots(), David Hildenbrand, 2023/10/12
- [GIT PULL 12/18] memory-device, vhost: Support automatic decision on the number of memslots, David Hildenbrand, 2023/10/12
- [GIT PULL 13/18] memory: Clarify mapping requirements for RamDiscardManager, David Hildenbrand, 2023/10/12
- Re: [GIT PULL 00/18] Host Memory Backends and Memory devices queue 2023-10-12, Stefan Hajnoczi, 2023/10/16