From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <ehabkost@redhat.com>,
kvm@vger.kernel.org, "Michael S . Tsirkin" <mst@redhat.com>,
David Hildenbrand <david@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
Juan Quintela <quintela@redhat.com>,
qemu-s390x@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: [PATCH v5 08/21] migration/rdma: Use ram_block_discard_disable()
Date: Fri, 26 Jun 2020 09:22:35 +0200 [thread overview]
Message-ID: <20200626072248.78761-9-david@redhat.com> (raw)
In-Reply-To: <20200626072248.78761-1-david@redhat.com>
RDMA will pin all guest memory (as documented in docs/rdma.txt). We want
to disable RAM block discards - however, to keep it simple use
ram_block_discard_is_required() instead of inhibiting.
Note: It is not sufficient to limit disabling to pin_all. Even when only
conditionally pinning 1 MB chunks, as soon as one page within such a
chunk was discarded and one page not, the discarded pages will be pinned
as well.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Juan Quintela <quintela@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
migration/rdma.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/migration/rdma.c b/migration/rdma.c
index ec45d33ba3..bbe6f36627 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -29,6 +29,7 @@
#include "qemu/sockets.h"
#include "qemu/bitmap.h"
#include "qemu/coroutine.h"
+#include "exec/memory.h"
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
@@ -4017,8 +4018,14 @@ void rdma_start_incoming_migration(const char *host_port, Error **errp)
Error *local_err = NULL;
trace_rdma_start_incoming_migration();
- rdma = qemu_rdma_data_init(host_port, &local_err);
+ /* Avoid ram_block_discard_disable(), cannot change during migration. */
+ if (ram_block_discard_is_required()) {
+ error_setg(errp, "RDMA: cannot disable RAM discard");
+ return;
+ }
+
+ rdma = qemu_rdma_data_init(host_port, &local_err);
if (rdma == NULL) {
goto err;
}
@@ -4067,10 +4074,17 @@ void rdma_start_outgoing_migration(void *opaque,
const char *host_port, Error **errp)
{
MigrationState *s = opaque;
- RDMAContext *rdma = qemu_rdma_data_init(host_port, errp);
RDMAContext *rdma_return_path = NULL;
+ RDMAContext *rdma;
int ret = 0;
+ /* Avoid ram_block_discard_disable(), cannot change during migration. */
+ if (ram_block_discard_is_required()) {
+ error_setg(errp, "RDMA: cannot disable RAM discard");
+ return;
+ }
+
+ rdma = qemu_rdma_data_init(host_port, errp);
if (rdma == NULL) {
goto err;
}
--
2.26.2
next prev parent reply other threads:[~2020-06-26 7:30 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-26 7:22 [PATCH v5 00/21] virtio-mem: Paravirtualized memory hot(un)plug David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 01/21] pc: Support coldplugging of virtio-pmem-pci devices on all buses David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 02/21] exec: Introduce ram_block_discard_(disable|require)() David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 03/21] vfio: Convert to ram_block_discard_disable() David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 04/21] accel/kvm: " David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 05/21] s390x/pv: " David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 06/21] virtio-balloon: Rip out qemu_balloon_inhibit() David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 07/21] target/i386: sev: Use ram_block_discard_disable() David Hildenbrand
2020-06-26 7:22 ` David Hildenbrand [this message]
2020-06-26 7:22 ` [PATCH v5 09/21] migration/colo: " David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 10/21] virtio-mem: Paravirtualized memory hot(un)plug David Hildenbrand
2020-06-30 10:06 ` Michael S. Tsirkin
2020-06-30 10:21 ` David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 11/21] virtio-pci: Proxy for virtio-mem David Hildenbrand
2020-07-06 15:28 ` Cornelia Huck
2020-07-06 16:39 ` David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 12/21] MAINTAINERS: Add myself as virtio-mem maintainer David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 13/21] hmp: Handle virtio-mem when printing memory device info David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 14/21] numa: Handle virtio-mem in NUMA stats David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 15/21] pc: Support for virtio-mem-pci David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 16/21] virtio-mem: Allow notifiers for size changes David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 17/21] virtio-pci: Send qapi events when the virtio-mem " David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 18/21] virtio-mem: Migration sanity checks David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 19/21] virtio-mem: Add trace events David Hildenbrand
2020-07-02 19:08 ` Dr. David Alan Gilbert
2020-06-26 7:22 ` [PATCH v5 20/21] virtio-mem: Exclude unplugged memory during migration David Hildenbrand
2020-06-26 7:22 ` [PATCH v5 21/21] numa: Auto-enable NUMA when any memory devices are possible David Hildenbrand
2020-07-03 10:40 ` [PATCH v1] virtio-mem: fix cross-compilation due to VIRTIO_MEM_USABLE_EXTENT David Hildenbrand
2020-07-03 11:57 ` Michael S. Tsirkin
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=20200626072248.78761-9-david@redhat.com \
--to=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).