From: Marcelo Tosatti <mtosatti@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Liu Ping Fan <pingfank@linux.vnet.ibm.com>,
Avi Kivity <avi@redhat.com>, kvm <kvm@vger.kernel.org>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path
Date: Thu, 23 Aug 2012 11:01:12 -0300 [thread overview]
Message-ID: <20120823140112.GA29605@amt.cnet> (raw)
In-Reply-To: <cover.1345719751.git.jan.kiszka@siemens.com>
On Thu, Aug 23, 2012 at 01:02:28PM +0200, Jan Kiszka wrote:
> This is just a repost, now targeting uq/master as agreed. No changes
> compared to v2 except that "i82378: Remove bogus MMIO coalescing" was
> dropped as it is already in QEMU upstream by now.
>
> Original description:
>
> We currently flush the coalesced MMIO buffer on every vmexit to
> userspace. KVM only provides a single buffer per VM, so a central lock
> is required to read from it. This is a contention point given a large
> enough VCPU set. Moreover, we need to hold the BQL while replaying the
> queued requests, probably for a long time until there is more fine
> grained locking available. Good reasons to overcome the unconditional
> flush.
>
> The series achieves this by flushing only on selected memory region
> accesses, either generically via the memory access dispatcher or
> directly on certain VGA PIO accesses that are not yet fully converted.
> Another reason to flush are remappings or other relevant region state
> changes.
>
> Jan Kiszka (6):
> memory: Flush coalesced MMIO on selected region access
> memory: Use transaction_begin/commit also for single-step operations
> memory: Fold memory_region_update_topology into
> memory_region_transaction_commit
> memory: Flush coalesced MMIO on mapping and state changes
> VGA: Flush coalesced MMIO on related MMIO/PIO accesses
> kvm: Stop flushing coalesced MMIO on vmexit
>
> hw/cirrus_vga.c | 7 ++++
> hw/qxl.c | 1 +
> hw/vga-isa-mm.c | 1 +
> hw/vga.c | 5 +++
> hw/vmware_vga.c | 1 +
> kvm-all.c | 2 -
> memory.c | 104 ++++++++++++++++++++++++++++++++-----------------------
> memory.h | 26 ++++++++++++++
> 8 files changed, 102 insertions(+), 45 deletions(-)
>
> --
> 1.7.3.4
Applied, thanks.
WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Liu Ping Fan <pingfank@linux.vnet.ibm.com>,
Avi Kivity <avi@redhat.com>, kvm <kvm@vger.kernel.org>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path
Date: Thu, 23 Aug 2012 11:01:12 -0300 [thread overview]
Message-ID: <20120823140112.GA29605@amt.cnet> (raw)
In-Reply-To: <cover.1345719751.git.jan.kiszka@siemens.com>
On Thu, Aug 23, 2012 at 01:02:28PM +0200, Jan Kiszka wrote:
> This is just a repost, now targeting uq/master as agreed. No changes
> compared to v2 except that "i82378: Remove bogus MMIO coalescing" was
> dropped as it is already in QEMU upstream by now.
>
> Original description:
>
> We currently flush the coalesced MMIO buffer on every vmexit to
> userspace. KVM only provides a single buffer per VM, so a central lock
> is required to read from it. This is a contention point given a large
> enough VCPU set. Moreover, we need to hold the BQL while replaying the
> queued requests, probably for a long time until there is more fine
> grained locking available. Good reasons to overcome the unconditional
> flush.
>
> The series achieves this by flushing only on selected memory region
> accesses, either generically via the memory access dispatcher or
> directly on certain VGA PIO accesses that are not yet fully converted.
> Another reason to flush are remappings or other relevant region state
> changes.
>
> Jan Kiszka (6):
> memory: Flush coalesced MMIO on selected region access
> memory: Use transaction_begin/commit also for single-step operations
> memory: Fold memory_region_update_topology into
> memory_region_transaction_commit
> memory: Flush coalesced MMIO on mapping and state changes
> VGA: Flush coalesced MMIO on related MMIO/PIO accesses
> kvm: Stop flushing coalesced MMIO on vmexit
>
> hw/cirrus_vga.c | 7 ++++
> hw/qxl.c | 1 +
> hw/vga-isa-mm.c | 1 +
> hw/vga.c | 5 +++
> hw/vmware_vga.c | 1 +
> kvm-all.c | 2 -
> memory.c | 104 ++++++++++++++++++++++++++++++++-----------------------
> memory.h | 26 ++++++++++++++
> 8 files changed, 102 insertions(+), 45 deletions(-)
>
> --
> 1.7.3.4
Applied, thanks.
next prev parent reply other threads:[~2012-08-23 14:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-23 11:02 [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 1/6] memory: Flush coalesced MMIO on selected region access Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 2/6] memory: Use transaction_begin/commit also for single-step operations Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 3/6] memory: Fold memory_region_update_topology into memory_region_transaction_commit Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 4/6] memory: Flush coalesced MMIO on mapping and state changes Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 5/6] VGA: Flush coalesced MMIO on related MMIO/PIO accesses Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 11:02 ` [PATCH v3 uq/master 6/6] kvm: Stop flushing coalesced MMIO on vmexit Jan Kiszka
2012-08-23 11:02 ` [Qemu-devel] " Jan Kiszka
2012-08-23 14:01 ` Marcelo Tosatti [this message]
2012-08-23 14:01 ` [Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path Marcelo Tosatti
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=20120823140112.GA29605@amt.cnet \
--to=mtosatti@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=pingfank@linux.vnet.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.