[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH PROTOTYPE 6/6] vfio: Disable only RAM_BLOCK_DISCARD_T_UNCOORDINAT
From: |
David Hildenbrand |
Subject: |
[PATCH PROTOTYPE 6/6] vfio: Disable only RAM_BLOCK_DISCARD_T_UNCOORDINATED discards |
Date: |
Thu, 24 Sep 2020 18:04:23 +0200 |
This unlocks virtio-mem with vfio. A virtio-mem device properly notifies
about all accessible/mapped blocks inside a managed memory region -
whenever blocks become accessible and whenever blocks become inaccessible.
Note: The block size of a virtio-mem device has to be set to sane sizes,
depending on the maximum hotplug size - to not run out of vfio mappings.
The default virtio-mem block size is usually in the range of a couple of
MBs. Linux kernels (x86-64) don't support block sizes > 128MB
with an initial memory size of < 64 MB - and above that only in some
cases 2GB. The larger the blocks, the less likely that a lot of
memory can get unplugged again. The smaller the blocks, the slower
memory hot(un)plug will be.
Assume you want to hotplug 256GB - the block size would have to be at
least 8 MB (resulting in 32768 distinct mappings).
It's expected that the block size will be comparatively large when
virtio-mem is used with vfio in the future (e.g., 128MB, 1G, 2G) -
something Linux guests will have to be optimized for.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Wei Yang <richardw.yang@linux.intel.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
hw/vfio/common.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index a3aaf70dd8..4d82296967 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -1392,8 +1392,12 @@ static int vfio_connect_container(VFIOGroup *group,
AddressSpace *as,
* new memory, it will not yet set ram_block_discard_set_required() and
* therefore, neither stops us here or deals with the sudden memory
* consumption of inflated memory.
+ *
+ * We do support discarding for memory regions where accessible pieces
+ * are coordinated via the SparseRAMNotifier.
*/
- ret = ram_block_discard_disable(true);
+ ret = ram_block_discard_type_disable(RAM_BLOCK_DISCARD_T_UNCOORDINATED,
+ true);
if (ret) {
error_setg_errno(errp, -ret, "Cannot set discarding of RAM broken");
return ret;
@@ -1564,7 +1568,7 @@ close_fd_exit:
close(fd);
put_space_exit:
- ram_block_discard_disable(false);
+ ram_block_discard_type_disable(RAM_BLOCK_DISCARD_T_UNCOORDINATED, false);
vfio_put_address_space(space);
return ret;
@@ -1686,7 +1690,8 @@ void vfio_put_group(VFIOGroup *group)
}
if (!group->ram_block_discard_allowed) {
- ram_block_discard_disable(false);
+ ram_block_discard_type_disable(RAM_BLOCK_DISCARD_T_UNCOORDINATED,
+ false);
}
vfio_kvm_device_del_group(group);
vfio_disconnect_container(group);
@@ -1740,7 +1745,8 @@ int vfio_get_device(VFIOGroup *group, const char *name,
if (!group->ram_block_discard_allowed) {
group->ram_block_discard_allowed = true;
- ram_block_discard_disable(false);
+ ram_block_discard_type_disable(RAM_BLOCK_DISCARD_T_UNCOORDINATED,
+ false);
}
}
--
2.26.2
- [PATCH PROTOTYPE 0/6] virtio-mem: vfio support, David Hildenbrand, 2020/09/24
- [PATCH PROTOTYPE 2/6] virtio-mem: Impelement SparseRAMHandler interface, David Hildenbrand, 2020/09/24
- [PATCH PROTOTYPE 3/6] vfio: Implement support for sparse RAM memory regions, David Hildenbrand, 2020/09/24
- [PATCH PROTOTYPE 4/6] memory: Extend ram_block_discard_(require|disable) by two discard types, David Hildenbrand, 2020/09/24
- [PATCH PROTOTYPE 5/6] virtio-mem: Require only RAM_BLOCK_DISCARD_T_COORDINATED discards, David Hildenbrand, 2020/09/24
- [PATCH PROTOTYPE 6/6] vfio: Disable only RAM_BLOCK_DISCARD_T_UNCOORDINATED discards,
David Hildenbrand <=
- [PATCH PROTOTYPE 1/6] memory: Introduce sparse RAM handler for memory regions, David Hildenbrand, 2020/09/24
- Re: [PATCH PROTOTYPE 0/6] virtio-mem: vfio support, no-reply, 2020/09/24
- Re: [PATCH PROTOTYPE 0/6] virtio-mem: vfio support, Dr. David Alan Gilbert, 2020/09/29