[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 16/16] virtio-mem: Mark memslot alias memory regions unmergeab
From: |
David Hildenbrand |
Subject: |
[PATCH v2 16/16] virtio-mem: Mark memslot alias memory regions unmergeable |
Date: |
Fri, 25 Aug 2023 15:21:49 +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.
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 724fcb189a..50770b577a 100644
--- a/hw/virtio/virtio-mem.c
+++ b/hw/virtio/virtio-mem.c
@@ -959,6 +959,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
- [PATCH v2 07/16] stubs: Rename qmp_memory_device.c to memory_device.c, (continued)
- [PATCH v2 07/16] stubs: Rename qmp_memory_device.c to memory_device.c, David Hildenbrand, 2023/08/25
- [PATCH v2 08/16] memory-device: Track required and actually used memslots in DeviceMemoryState, David Hildenbrand, 2023/08/25
- [PATCH v2 09/16] memory-device, vhost: Support memory devices that dynamically consume memslots, David Hildenbrand, 2023/08/25
- [PATCH v2 10/16] kvm: Add stub for kvm_get_max_memslots(), David Hildenbrand, 2023/08/25
- [PATCH v2 11/16] vhost: Add vhost_get_max_memslots(), David Hildenbrand, 2023/08/25
- [PATCH v2 12/16] memory-device, vhost: Support automatic decision on the number of memslots, David Hildenbrand, 2023/08/25
- [PATCH v2 14/16] virtio-mem: Expose device memory via multiple memslots if enabled, David Hildenbrand, 2023/08/25
- [PATCH v2 13/16] memory: Clarify mapping requirements for RamDiscardManager, David Hildenbrand, 2023/08/25
- [PATCH v2 15/16] memory, vhost: Allow for marking memory device memory regions unmergeable, David Hildenbrand, 2023/08/25
- [PATCH v2 16/16] virtio-mem: Mark memslot alias memory regions unmergeable,
David Hildenbrand <=