From: Chris Friesen <chris.friesen@windriver.com>
To: Amit Shah <amit.shah@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] virtio-serial-pci very expensive during live migration
Date: Thu, 8 May 2014 08:31:00 -0600 [thread overview]
Message-ID: <536B9524.8070307@windriver.com> (raw)
In-Reply-To: <20140508133052.GA25602@grmbl.mre>
On 05/08/2014 07:30 AM, Amit Shah wrote:
> On (Thu) 08 May 2014 [15:14:26], Paolo Bonzini wrote:
>> Il 08/05/2014 15:02, Amit Shah ha scritto:
>>>>> I tried the patch below. Unfortunately it seems to cause qemu to crash.
>>> This doesn't remove the memory_region_transaction_begin() and
>>> _commit() from memory_region_add_eventfd(), which will still be
>>> called.
>>
>> That's correct, transactions can be nested.
>
> But each _commit() will add to the delay?
No, the _commit() call checks "memory_region_transaction_depth" and only
does the address space scan when it hits zero. So with nested
transactions only the outer commit will actually do the address space scan.
The fact remains that qemu crashes when I apply the patch. I also tried
patching it as below in virtio_pci_vmstate_change(). That would allow
the VM to boot, but it would crash when I tried to do a live migration.
Chris
--- qemu-1.4.2.orig/hw/virtio-pci.c
+++ qemu-1.4.2/hw/virtio-pci.c
@@ -32,6 +32,7 @@
#include "virtio-pci.h"
#include "qemu/range.h"
#include "virtio-bus.h"
+#include "exec/memory.h"
/* from Linux's linux/virtio_pci.h */
@@ -854,7 +855,7 @@ static int virtio_pci_set_host_notifier(
static void virtio_pci_vmstate_change(DeviceState *d, bool running)
{
VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
-
+ memory_region_transaction_begin();
if (running) {
/* Try to find out if the guest has bus master disabled, but is
in ready state. Then we have a buggy guest OS. */
@@ -866,6 +867,7 @@ static void virtio_pci_vmstate_change(De
} else {
virtio_pci_stop_ioeventfd(proxy);
}
+ memory_region_transaction_commit();
}
static const VirtIOBindings virtio_pci_bindings = {
next prev parent reply other threads:[~2014-05-08 14:31 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-06 20:01 [Qemu-devel] virtio-serial-pci very expensive during live migration Chris Friesen
2014-05-07 5:58 ` Markus Armbruster
2014-05-07 6:39 ` Paolo Bonzini
2014-05-07 22:25 ` Chris Friesen
2014-05-08 13:02 ` Amit Shah
2014-05-08 13:14 ` Paolo Bonzini
2014-05-08 13:30 ` Amit Shah
2014-05-08 13:36 ` Paolo Bonzini
2014-05-08 13:47 ` Amit Shah
2014-05-08 15:40 ` Chris Friesen
2014-05-09 0:53 ` Chris Friesen
2014-05-09 8:19 ` Paolo Bonzini
2014-06-19 15:19 ` Chris Friesen
2014-06-19 15:31 ` Paolo Bonzini
2014-05-08 14:31 ` Chris Friesen [this message]
2014-05-08 14:34 ` Paolo Bonzini
2014-05-08 15:57 ` Chris Friesen
2014-05-08 16:02 ` Paolo Bonzini
2014-05-08 20:57 ` Chris Friesen
2014-05-09 1:44 ` ChenLiang
2014-05-09 3:31 ` Chris Friesen
2014-05-08 2:54 ` Gonglei (Arei)
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=536B9524.8070307@windriver.com \
--to=chris.friesen@windriver.com \
--cc=amit.shah@redhat.com \
--cc=armbru@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).