[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing o
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path |
Date: |
Thu, 23 Aug 2012 13:02:28 +0200 |
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
- [Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path,
Jan Kiszka <=
- [Qemu-devel] [PATCH v3 uq/master 5/6] VGA: Flush coalesced MMIO on related MMIO/PIO accesses, Jan Kiszka, 2012/08/23
- [Qemu-devel] [PATCH v3 uq/master 2/6] memory: Use transaction_begin/commit also for single-step operations, Jan Kiszka, 2012/08/23
- [Qemu-devel] [PATCH v3 uq/master 6/6] kvm: Stop flushing coalesced MMIO on vmexit, Jan Kiszka, 2012/08/23
- [Qemu-devel] [PATCH v3 uq/master 4/6] memory: Flush coalesced MMIO on mapping and state changes, Jan Kiszka, 2012/08/23
- [Qemu-devel] [PATCH v3 uq/master 3/6] memory: Fold memory_region_update_topology into memory_region_transaction_commit, Jan Kiszka, 2012/08/23
- [Qemu-devel] [PATCH v3 uq/master 1/6] memory: Flush coalesced MMIO on selected region access, Jan Kiszka, 2012/08/23
- Re: [Qemu-devel] [PATCH v3 uq/master 0/6] kvm: Get coalesced MMIO flushing out of the hot-path, Marcelo Tosatti, 2012/08/23