qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	peterx@redhat.com, Richard Henderson <rth@twiddle.net>
Subject: [PATCH 0/8] memory: Sanity checks memory transaction when releasing BQL
Date: Tue, 21 Apr 2020 12:21:00 -0400	[thread overview]
Message-ID: <20200421162108.594796-1-peterx@redhat.com> (raw)

This is a continuous work of previous discussion on memory transactions [1].
It should be helpful to fail QEMU far earlier if there's misuse of BQL against
the QEMU memory model.

One example is run_on_cpu() during memory commit.  That'll work previously, but
it'll fail with very strange errors (like KVM ioctl failure due to memslot
already existed, and it's not guaranteed to trigger constantly).  Now it'll
directly fail when run_on_cpu() is called.

Please have a look, thanks.

[1] https://lists.gnu.org/archive/html/qemu-devel/2020-04/msg03205.html

Peter Xu (8):
  memory: Introduce memory_region_transaction_{push|pop}()
  memory: Don't do topology update in memory finalize()
  cpus: Use qemu_cond_wait_iothread() where proper
  cpus: Introduce qemu_cond_timedwait_iothread()
  cpus: Remove the mutex parameter from do_run_on_cpu()
  cpus: Introduce qemu_mutex_unlock_iothread_prepare()
  memory: Assert on no ongoing memory transaction before release BQL
  memory: Delay the transaction pop() until commit completed

 cpus-common.c                  |  5 ++--
 cpus.c                         | 32 ++++++++++++++------
 include/exec/memory-internal.h |  1 +
 include/hw/core/cpu.h          |  4 +--
 include/qemu/main-loop.h       |  7 +++++
 memory.c                       | 53 ++++++++++++++++++++++++++++++----
 6 files changed, 81 insertions(+), 21 deletions(-)

-- 
2.24.1



             reply	other threads:[~2020-04-21 16:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-21 16:21 Peter Xu [this message]
2020-04-21 16:21 ` [PATCH 1/8] memory: Introduce memory_region_transaction_{push|pop}() Peter Xu
2020-04-21 16:21 ` [PATCH 2/8] memory: Don't do topology update in memory finalize() Peter Xu
2020-04-21 16:21 ` [PATCH 3/8] cpus: Use qemu_cond_wait_iothread() where proper Peter Xu
2020-04-21 16:21 ` [PATCH 4/8] cpus: Introduce qemu_cond_timedwait_iothread() Peter Xu
2020-04-21 16:21 ` [PATCH 5/8] cpus: Remove the mutex parameter from do_run_on_cpu() Peter Xu
2020-04-21 16:21 ` [PATCH 6/8] cpus: Introduce qemu_mutex_unlock_iothread_prepare() Peter Xu
2020-04-21 16:21 ` [PATCH 7/8] memory: Assert on no ongoing memory transaction before release BQL Peter Xu
2020-04-21 16:21 ` [PATCH 8/8] memory: Delay the transaction pop() until commit completed Peter Xu
2020-05-23 20:30 ` [PATCH 0/8] memory: Sanity checks memory transaction when releasing BQL Peter Xu

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=20200421162108.594796-1-peterx@redhat.com \
    --to=peterx@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --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).