From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
David Hildenbrand <david@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
Peter Xu <peterx@redhat.com>,
Luiz Capitulino <lcapitulino@redhat.com>,
Auger Eric <eric.auger@redhat.com>,
Alex Williamson <alex.williamson@redhat.com>,
Wei Yang <richardw.yang@linux.intel.com>,
Igor Mammedov <imammedo@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: [PATCH PROTOTYPE 6/6] vfio: Disable only RAM_BLOCK_DISCARD_T_UNCOORDINATED discards
Date: Thu, 24 Sep 2020 18:04:23 +0200 [thread overview]
Message-ID: <20200924160423.106747-7-david@redhat.com> (raw)
In-Reply-To: <20200924160423.106747-1-david@redhat.com>
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
next prev parent reply other threads:[~2020-09-24 16:27 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-24 16:04 [PATCH PROTOTYPE 0/6] virtio-mem: vfio support David Hildenbrand
2020-09-24 16:04 ` [PATCH PROTOTYPE 1/6] memory: Introduce sparse RAM handler for memory regions David Hildenbrand
2020-10-20 19:24 ` Peter Xu
2020-10-20 20:13 ` David Hildenbrand
2020-09-24 16:04 ` [PATCH PROTOTYPE 2/6] virtio-mem: Impelement SparseRAMHandler interface David Hildenbrand
2020-09-24 16:04 ` [PATCH PROTOTYPE 3/6] vfio: Implement support for sparse RAM memory regions David Hildenbrand
2020-10-20 19:44 ` Peter Xu
2020-10-20 20:01 ` David Hildenbrand
2020-10-20 20:44 ` Peter Xu
2020-11-12 10:11 ` David Hildenbrand
2020-11-18 13:04 ` David Hildenbrand
2020-11-18 15:23 ` Peter Xu
2020-11-18 16:14 ` David Hildenbrand
2020-11-18 17:01 ` Peter Xu
2020-11-18 17:37 ` David Hildenbrand
2020-11-18 19:05 ` Peter Xu
2020-11-18 19:20 ` David Hildenbrand
2020-09-24 16:04 ` [PATCH PROTOTYPE 4/6] memory: Extend ram_block_discard_(require|disable) by two discard types David Hildenbrand
2020-10-20 19:17 ` Peter Xu
2020-10-20 19:58 ` David Hildenbrand
2020-10-20 20:49 ` Peter Xu
2020-10-20 21:30 ` Peter Xu
2020-09-24 16:04 ` [PATCH PROTOTYPE 5/6] virtio-mem: Require only RAM_BLOCK_DISCARD_T_COORDINATED discards David Hildenbrand
2020-09-24 16:04 ` David Hildenbrand [this message]
2020-09-24 19:30 ` [PATCH PROTOTYPE 0/6] virtio-mem: vfio support no-reply
2020-09-29 17:02 ` Dr. David Alan Gilbert
2020-09-29 17:05 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200924160423.106747-7-david@redhat.com \
--to=david@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eric.auger@redhat.com \
--cc=imammedo@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=mst@redhat.com \
--cc=pankaj.gupta.linux@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richardw.yang@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.