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.


Reply via email to