[PATCH 0/5] kvm: Batch writes to MMIO

Laurent Vivier
2008-05-23T08:50:19Z

When kernel has to send MMIO writes to userspace, it stores them
in memory until it has to pass the hand to userspace for another
reason. This avoids to have too many context switches on operations
that can wait.

These patches introduce an ioctl() to define MMIO allowed to be delayed.

WITHOUT WITH
PATCH PATCH

iperf (e1000) 169 MB/s 185,5 MB/s +9,7%
host_state_reload (626594) (391825) -37%

[9,7% is a more realistic value than my previous benchmark]

boot XP
host_state_reload 764677 516059 -32%

VGA text scroll
host_state_reload 13280568 (6:15) 3608362 (4:42) -73% (-25%)

This is the kernel part of the MMIO batching functionality.

[PATCH 1/5] kvm_io_device: extend in_range() to manage len and write attribute

Modify member in_range() of structure kvm_io_device to pass length
and the type of the I/O (write or read).

[PATCH 2/5] Add delayed MMIO support (common part)

This patch adds all needed structures to batch MMIOs.
Until an architecture uses it, it is not compiled.

[PATCH 3/5] Add delayed MMIO support (x86 part)

This patch enables MMIO batching for x86 architecture.

[PATCH 4/5] Add delayed MMIO support (powerpc part)

This patch enables MMIO batching for powerpc architecture.
WARNING: this has not been tested.

[PATCH 5/5] Add delayed MMIO support (ia64 part)

This patch enables MMIO batching for ia64 architecture.
WARNING: this has not been tested.