diff options
author | Keir Fraser <keir@xensource.com> | 2007-10-26 10:32:20 +0100 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-10-26 10:32:20 +0100 |
commit | 3ed09ac11ba5f60c2189242884a6a792ac450058 (patch) | |
tree | 00e8f6d6ae4a891835dcb09dc5bbcc259bd0222d /xen/arch/x86/hvm/Makefile | |
parent | af287919fd8e4c447e87a76fe06595debfef95e8 (diff) | |
download | xen-3ed09ac11ba5f60c2189242884a6a792ac450058.tar.gz xen-3ed09ac11ba5f60c2189242884a6a792ac450058.tar.bz2 xen-3ed09ac11ba5f60c2189242884a6a792ac450058.zip |
x86, hvm: Improve standard VGA performance
This patch improves the performance of Standard VGA,
the mode used during Windows boot and by the Linux
splash screen.
It does so by buffering all the stdvga programmed output ops
and memory mapped ops (both reads and writes) that are sent to QEMU.
We maintain locally essential VGA state so we can respond
immediately to input and read ops without waiting for
QEMU. We snoop output and write ops to keep our state
up-to-date.
PIO input ops are satisfied from cached state without
bothering QEMU.
PIO output and mmio ops are passed through to QEMU, including
mmio read ops. This is necessary because mmio reads
can have side effects.
I have changed the format of the buffered_iopage.
It used to contain 80 elements of type ioreq_t (48 bytes each).
Now it contains 672 elements of type buf_ioreq_t (6 bytes each).
Being able to pipeline 8 times as many ops improves
VGA performance by a factor of 8.
I changed hvm_buffered_io_intercept to use the same
registration and callback mechanism as hvm_portio_intercept
rather than the hacky hardcoding it used before.
In platform.c, I fixed send_timeoffset_req() to sets its
ioreq size to 8 (rather than 4), and its count to 1 (which
was missing).
Signed-off-by: Ben Guthro <bguthro@virtualron.com>
Signed-off-by: Robert Phillips <rphillips@virtualiron.com>
Diffstat (limited to 'xen/arch/x86/hvm/Makefile')
-rw-r--r-- | xen/arch/x86/hvm/Makefile | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile index 68bb62fc94..bb2e0e42c1 100644 --- a/xen/arch/x86/hvm/Makefile +++ b/xen/arch/x86/hvm/Makefile @@ -17,3 +17,4 @@ obj-y += vioapic.o obj-y += vlapic.o obj-y += vpic.o obj-y += save.o +obj-y += stdvga.o |