qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Fam Zheng <famz@redhat.com>
Subject: [Qemu-devel] [PULL 13/21] dump: Acquire BQL around vm_start() in dump thread
Date: Fri,  5 May 2017 12:13:29 +0200	[thread overview]
Message-ID: <20170505101337.4650-14-pbonzini@redhat.com> (raw)
In-Reply-To: <20170505101337.4650-1-pbonzini@redhat.com>

From: Fam Zheng <famz@redhat.com>

This fixes an assertion failure in the following backtrace:

    __GI___assert_fail
    memory_region_transaction_commit
    memory_region_add_eventfd
    virtio_pci_ioeventfd_assign
    virtio_bus_set_host_notifier
    virtio_blk_data_plane_start
    virtio_bus_start_ioeventfd
    virtio_vmstate_change
    vm_state_notify
    vm_prepare_start
    vm_start
    dump_cleanup
    dump_process
    dump_thread
    start_thread
    clone

vm_start need BQL, acquire it if doing cleaning up from main thread.

Signed-off-by: Fam Zheng <famz@redhat.com>
Message-Id: <20170503072819.14462-1-famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 dump.c                | 7 +++++++
 include/sysemu/dump.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/dump.c b/dump.c
index f7b80d856b..d9090a24cc 100644
--- a/dump.c
+++ b/dump.c
@@ -77,7 +77,13 @@ static int dump_cleanup(DumpState *s)
     memory_mapping_list_free(&s->list);
     close(s->fd);
     if (s->resume) {
+        if (s->detached) {
+            qemu_mutex_lock_iothread();
+        }
         vm_start();
+        if (s->detached) {
+            qemu_mutex_unlock_iothread();
+        }
     }
 
     return 0;
@@ -1804,6 +1810,7 @@ void qmp_dump_guest_memory(bool paging, const char *file,
 
     if (detach_p) {
         /* detached dump */
+        s->detached = true;
         qemu_thread_create(&s->dump_thread, "dump_thread", dump_thread,
                            s, QEMU_THREAD_DETACHED);
     } else {
diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
index ef931be469..2672a15f8b 100644
--- a/include/sysemu/dump.h
+++ b/include/sysemu/dump.h
@@ -157,6 +157,7 @@ typedef struct DumpState {
     uint32_t sh_info;
     bool have_section;
     bool resume;
+    bool detached;
     ssize_t note_size;
     hwaddr memory_offset;
     int fd;
-- 
2.12.2

  parent reply	other threads:[~2017-05-05 10:13 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-05 10:13 [Qemu-devel] [PULL 00/21] Misc patches for 2017-05-05 Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 01/21] hw/i386: Use Rev3 FADT (ACPI 2.0) instead of Rev1 to improve guest OS support Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 02/21] hw/i386: Build-time assertion on pc/q35 reset register being identical Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 03/21] char: Fix removing wrong GSource that be found by fd_in_tag Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 04/21] target/i386: Add GDB XML register description support Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 05/21] use _Static_assert in QEMU_BUILD_BUG_ON Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 06/21] vl: deprecate the "-hdachs" option Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 07/21] scsi: avoid an off-by-one error in megasas_mmio_write Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 08/21] sgabios: update for "fix wrong video attrs for int 10h, ah==13h" Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 09/21] vmw_pvscsi: check message ring page count at initialisation Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 10/21] trace: add qemu mutex lock and unlock trace events Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 11/21] checkpatch: Disallow glib asserts in main code Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 12/21] hax: Fix memory mapping de-duplication logic Paolo Bonzini
2017-05-05 10:13 ` Paolo Bonzini [this message]
2017-05-05 10:13 ` [Qemu-devel] [PULL 14/21] Fix the -accel parameter and the documentation for 'hax' Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 15/21] MAINTAINERS: Add "R:" tag for self-appointed reviewers Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 16/21] get_maintainer: Teach get_maintainer.pl about the new "R:" tag Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 17/21] get_maintainer: it's '--pattern-depth', not '-pattern-depth' Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 18/21] get_maintainer: --r (list reviewer) is on by default Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 19/21] get_maintainer: add subsystem to reviewer output Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 20/21] libvhost-user: replace vasprintf() to fix build Paolo Bonzini
2017-05-05 10:13 ` [Qemu-devel] [PULL 21/21] vhost-scsi: create a vhost-scsi-common abstraction Paolo Bonzini
2017-05-30 13:11   ` Stefan Hajnoczi
2017-05-30 14:06     ` Felipe Franciosi
2017-05-30 14:16       ` Paolo Bonzini
2017-05-30 14:21         ` Felipe Franciosi
2017-05-30 14:29           ` Paolo Bonzini
2017-05-30 14:34             ` Felipe Franciosi
2017-05-08 17:02 ` [Qemu-devel] [PULL 00/21] Misc patches for 2017-05-05 Stefan Hajnoczi
2017-05-30 13:13 ` Stefan Hajnoczi

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=20170505101337.4650-14-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=famz@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).