kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/7] kvm: Get coalesced MMIO flushing out of the hot-path
@ 2012-06-27 16:27 Jan Kiszka
  2012-06-27 16:27 ` [PATCH v2 1/7] i82378: Remove bogus MMIO coalescing Jan Kiszka
                   ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Jan Kiszka @ 2012-06-27 16:27 UTC (permalink / raw)
  To: Anthony Liguori, qemu-devel
  Cc: Liu Ping Fan, Avi Kivity, kvm, Marcelo Tosatti

Changes in v2:
 - added memory_region_clear_flush_coalesced
 - call memory_region_clear_flush_coalesced from
   memory_region_clear_coalescing
 - wrap all region manipulations via memory_region_transaction_begin/
   commit internally
 - flush coalesced MMIO only on memory_region_transaction_begin

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 (7):
  i82378: Remove bogus MMIO coalescing
  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/i82378.c     |    1 -
 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        |  101 +++++++++++++++++++++++++++++++-----------------------
 memory.h        |   24 +++++++++++++
 9 files changed, 97 insertions(+), 46 deletions(-)

-- 
1.7.3.4

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2012-08-19  9:46 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-27 16:27 [PATCH v2 0/7] kvm: Get coalesced MMIO flushing out of the hot-path Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 1/7] i82378: Remove bogus MMIO coalescing Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 2/7] memory: Flush coalesced MMIO on selected region access Jan Kiszka
2012-06-28 16:07   ` Avi Kivity
2012-06-29 16:37     ` [PATCH v3 " Jan Kiszka
2012-07-02  9:07       ` Avi Kivity
2012-07-02  9:07         ` Avi Kivity
2012-07-10 10:41         ` Jan Kiszka
2012-08-17 10:55           ` Jan Kiszka
2012-08-19  9:46             ` Avi Kivity
2012-06-27 16:27 ` [PATCH v2 3/7] memory: Use transaction_begin/commit also for single-step operations Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 4/7] memory: Fold memory_region_update_topology into memory_region_transaction_commit Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 5/7] memory: Flush coalesced MMIO on mapping and state changes Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 6/7] VGA: Flush coalesced MMIO on related MMIO/PIO accesses Jan Kiszka
2012-06-27 16:27 ` [PATCH v2 7/7] kvm: Stop flushing coalesced MMIO on vmexit Jan Kiszka
2012-06-28 16:09 ` [PATCH v2 0/7] kvm: Get coalesced MMIO flushing out of the hot-path Avi Kivity

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).