From: Peter Xu <peterx@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <rth@twiddle.net>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
peterx@redhat.com, "David Hildenbrand" <david@redhat.com>
Subject: [PATCH v3 0/8] memory: Sanity checks memory transaction when releasing BQL
Date: Wed, 28 Jul 2021 14:31:43 -0400 [thread overview]
Message-ID: <20210728183151.195139-1-peterx@redhat.com> (raw)
This is v3 of the series. And, I think this is 6.2 material.
v2 changelog:
- Init qemu_work_item directly in do_run_on_cpu() [David]
- Rename memory_region_transaction_{push|pop} to *_depth_{inc|dec} [David]
- Changing wording of s/helpless/useless/ [David]
- Squashed v2 patch 7 into patch 8 [David]
- Collected r-bs
It was actually got forgotten for months until it was used to identify another
potential issue of bql usage here (besides it could still be helpful when
debugging a previous kvm dirty ring issue in that series):
https://lore.kernel.org/qemu-devel/CH0PR02MB7898BBD73D0F3F7D5003BB178BE19@CH0PR02MB7898.namprd02.prod.outlook.com/
So I figured maybe it's still worth to have it, hence a repost.
There're some changes against v1:
- patch "cpus: Introduce qemu_cond_timedwait_iothread()" is dropped because
it's introduced in another commit already (b0c3cf9407e64).
- two more patches to move do_run_on_cpu() into softmmu/ to fix a linux-user
compliation issue.
Please review, thanks.
=== Original Cover letter ===
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):
cpus: Export queue work related fields to cpu.h
cpus: Move do_run_on_cpu into softmmu/cpus.c
memory: Introduce memory_region_transaction_depth_{inc|dec}()
memory: Don't do topology update in memory finalize()
cpus: Use qemu_cond_wait_iothread() where proper
cpus: Remove the mutex parameter from do_run_on_cpu()
memory: Assert on no ongoing memory transaction before release BQL
memory: Delay the transaction pop() until commit completed
cpus-common.c | 36 ++---------------------
include/exec/memory-internal.h | 1 +
include/hw/core/cpu.h | 22 ++++++--------
softmmu/cpus.c | 39 ++++++++++++++++++++++---
softmmu/memory.c | 53 ++++++++++++++++++++++++++++++----
5 files changed, 94 insertions(+), 57 deletions(-)
--
2.31.1
next reply other threads:[~2021-07-28 18:36 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-28 18:31 Peter Xu [this message]
2021-07-28 18:31 ` [PATCH v3 1/8] cpus: Export queue work related fields to cpu.h Peter Xu
2021-07-28 18:40 ` Philippe Mathieu-Daudé
2021-07-28 18:31 ` [PATCH v3 2/8] cpus: Move do_run_on_cpu into softmmu/cpus.c Peter Xu
2021-07-28 18:35 ` Philippe Mathieu-Daudé
2021-07-28 18:31 ` [PATCH v3 3/8] memory: Introduce memory_region_transaction_depth_{inc|dec}() Peter Xu
2021-07-28 20:06 ` David Hildenbrand
2021-07-28 18:31 ` [PATCH v3 4/8] memory: Don't do topology update in memory finalize() Peter Xu
2021-07-28 18:31 ` [PATCH v3 5/8] cpus: Use qemu_cond_wait_iothread() where proper Peter Xu
2021-07-28 18:38 ` Philippe Mathieu-Daudé
2021-07-28 18:31 ` [PATCH v3 6/8] cpus: Remove the mutex parameter from do_run_on_cpu() Peter Xu
2021-07-28 18:39 ` Philippe Mathieu-Daudé
2021-07-28 18:31 ` [PATCH v3 7/8] memory: Assert on no ongoing memory transaction before release BQL Peter Xu
2021-07-28 18:31 ` [PATCH v3 8/8] memory: Delay the transaction pop() until commit completed Peter Xu
2021-09-08 15:30 ` [PATCH v3 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=20210728183151.195139-1-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=david@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@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).