QEMU With E2K User Support
Go to file
Alex Williamson f4d45d4782 vfio-pci: Fix MSI-X masking performance
There are still old guests out there that over-exercise MSI-X masking.
The current code completely sets-up and tears-down an MSI-X vector on
the "use" and "release" callbacks.  While this is functional, it can
slow an old guest to a crawl.  We can easily skip the KVM parts of
this so that we keep the MSI route and irqfd setup.  We do however
need to switch VFIO to trigger a different eventfd while masked.
Actually, we have the option of continuing to use -1 to disable the
trigger, but by using another EventNotifier we can allow the MSI-X
core to emulate pending bits and re-fire the vector once unmasked.
MSI code gets updated as well to use the same setup and teardown
structures and functions.

Prior to this change, an igbvf assigned to a RHEL5 guest gets about
20Mbps and 50 transactions/s with netperf (remote or VF->PF).  With
this change, we get line rate and 3k transactions/s remote or 2Gbps
and 6k+ transactions/s to the PF.  No significant change is expected
for newer guests with more well behaved MSI-X support.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2014-06-30 09:50:33 -06:00
audio audio: Drop superfluous conditionals around g_free() 2014-06-13 12:34:54 +02:00
backends rng-random: NULL check not needed before g_free() 2014-06-24 20:01:24 +04:00
block block: Add replaces argument to drive-mirror 2014-06-27 20:00:00 +02:00
bsd-user bsd-user: Fix syscall format, add strace support for more syscalls 2014-06-11 00:25:06 +01:00
default-configs pc: implement pc-dimm device abstraction 2014-06-19 16:41:47 +03:00
disas disas/libvixl: Fix wrong format strings 2014-06-29 22:04:28 +01:00
docs vhost-user: typo fixups 2014-06-29 19:39:41 +03:00
dtc@bc895d6d09
fpu fpu: softfloat: drop INLINE macro 2014-06-23 11:00:12 -04:00
fsdev
gdb-xml
hw vfio-pci: Fix MSI-X masking performance 2014-06-30 09:50:33 -06:00
include Merge remote-tracking branch 'remotes/bonzini/nbd-next' into staging 2014-06-30 16:13:32 +01:00
libcacard vscclient: Add required headers to fix build on FreeBSD 2014-06-24 20:01:24 +04:00
libdecnumber libdecnumber: Fix decNumberSetBCD 2014-06-16 13:24:29 +02:00
linux-headers linux-headers: update linux headers to kvm/next 2014-06-16 13:24:41 +02:00
linux-user Merge remote-tracking branch 'remotes/riku/linux-user-for-upstream' into staging 2014-06-29 16:44:13 +01:00
net net: move queue number into NICPeers 2014-06-27 11:19:31 +02:00
pc-bios pc-bios/s390-ccw: update binary 2014-06-27 12:11:53 +02:00
pixman@97336fad32
po
qapi Block patches for 2.1.0-rc0 2014-06-29 15:24:54 +01:00
qga
qobject json-lexer: fix escaped backslash in single-quoted string 2014-06-23 11:01:24 -04:00
qom cpu: introduce CPUClass::virtio_is_big_endian() 2014-06-29 19:39:42 +03:00
roms Update OpenBIOS images 2014-06-20 23:59:19 +01:00
scripts qapi script: clean up in scripts 2014-06-27 09:27:56 -04:00
slirp Increase maximum number of session of the internal TFTP server. 2014-06-24 20:01:24 +04:00
stubs Merge remote-tracking branch 'remotes/qmp-unstable/queue/qmp' into staging 2014-06-24 13:06:13 +01:00
sysconfigs/target
target-alpha softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
target-arm Fix new typos (found by codespell) 2014-06-24 20:01:24 +04:00
target-cris target-cris/translate.c: Remove _t_gen_mov_TN_env and _t_gen_mov_env_TN 2014-06-09 01:04:44 +02:00
target-i386 target-i386: Broadwell CPU model 2014-06-25 23:54:57 +02:00
target-lm32 vl: allow other threads to do qemu_system_vmstop_request 2014-06-23 16:36:13 +08:00
target-m68k softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
target-microblaze target-microblaze: Delete unused sign_extend() function 2014-06-10 19:39:34 +04:00
target-mips target-mips: copy CP0_Config1 into DisasContext 2014-06-20 22:14:13 +02:00
target-moxie softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
target-openrisc openrisc: fix comment 2014-06-29 18:59:06 +03:00
target-ppc target-ppc: enable virtio endian ambivalent support 2014-06-29 19:39:43 +03:00
target-s390x target-s390x: Remove unused ld_code6() function 2014-06-24 20:01:24 +04:00
target-sh4 softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
target-sparc softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
target-unicore32 target-unicore: Remove unused functions 2014-06-24 20:01:24 +04:00
target-xtensa softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
tcg tcg/ppc: Fix support for 64-bit PPC MacOSX hosts 2014-06-29 11:38:50 +01:00
tests tests/test-qmp-event: fix for GLib < 2.31 2014-06-30 15:06:11 +02:00
trace glib-compat.h: add new thread API emulation on top of pre-2.31 API 2014-06-10 07:44:01 +02:00
ui ui/cocoa: Honour -show-cursor command line option 2014-06-29 22:00:33 +01:00
util qemu_opts_append: Play nicely with QemuOptsList's head 2014-06-26 15:53:52 +02:00
.exrc
.gitignore qapi: ignore generated event files 2014-06-27 09:27:55 -04:00
.gitmodules PPC: Add u-boot firmware for e500 2014-06-16 13:24:35 +02:00
.mailmap
.travis.yml trace: Multi-backend tracing 2014-06-09 15:43:40 +02:00
aio-posix.c
aio-win32.c
arch_init.c migration: catch unknown flags in ram_load 2014-06-16 04:55:27 +02:00
async.c
balloon.c qapi event: convert BALLOON_CHANGE 2014-06-23 11:12:28 -04:00
block-migration.c
block.c block.c: Don't return success for bdrv_append_temp_snapshot() failure 2014-06-27 20:00:00 +02:00
blockdev-nbd.c nbd: Shutdown socket before closing. 2014-06-30 12:50:12 +02:00
blockdev.c block: Add replaces argument to drive-mirror 2014-06-27 20:00:00 +02:00
blockjob.c blockjob: Fix recent BLOCK_JOB_ERROR regression 2014-06-27 20:00:00 +02:00
bt-host.c
bt-vhci.c
Changelog
CODING_STYLE
configure configure: Enable out-of-tree iotests 2014-06-27 20:00:00 +02:00
COPYING
COPYING.LIB
coroutine-gthread.c glib-compat.h: add new thread API emulation on top of pre-2.31 API 2014-06-10 07:44:01 +02:00
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c coroutine-win32.c: Add noinline attribute to work around gcc bug 2014-06-26 14:08:14 +01:00
cpu-exec.c
cpus.c qapi event: convert STOP 2014-06-23 11:01:25 -04:00
cputlb.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
device_tree.c
device-hotplug.c blockdev: Remove unused DriveInfo reference count 2014-06-16 17:23:19 +08:00
disas.c monitor: QEMU Monitor Instruction Disassembly Incorrect for PowerPC LE Mode 2014-06-16 13:24:26 +02:00
dma-helpers.c
dump.c dump: Make DumpState and endian conversion routines available for arch-specific dump code 2014-06-16 13:24:36 +02:00
exec.c exec: introduce target_words_bigendian() helper 2014-06-29 19:39:42 +03:00
gdbstub.c
HACKING
hmp-commands.hx Add the vhost-user netdev backend to the command line 2014-06-19 18:44:18 +03:00
hmp.c block: Add replaces argument to drive-mirror 2014-06-27 20:00:00 +02:00
hmp.h hmp: add info memdev 2014-06-19 18:44:21 +03:00
iohandler.c
ioport.c
iothread.c
kvm-all.c Merge remote-tracking branch 'remotes/kvm/uq/master' into staging 2014-06-20 19:25:18 +01:00
kvm-stub.c Add kvm_eventfds_enabled function 2014-06-19 16:41:54 +03:00
LICENSE
main-loop.c
MAINTAINERS Merge remote-tracking branch 'remotes/kvm/uq/master' into staging 2014-06-20 19:25:18 +01:00
Makefile qapi: move event defines 2014-06-27 09:27:55 -04:00
Makefile.objs qapi script: add event support 2014-06-23 11:01:25 -04:00
Makefile.target build-sys: introduce install-prog macro to install&strip binaries and use it 2014-06-24 20:01:24 +04:00
memory_mapping.c
memory.c hostmem: add property to map memory with MAP_SHARED 2014-06-19 18:44:20 +03:00
migration-exec.c
migration-fd.c
migration-rdma.c rdma: bug fixes 2014-06-23 19:09:50 +02:00
migration-tcp.c
migration-unix.c
migration.c migration: catch unknown flags in ram_load 2014-06-16 04:55:27 +02:00
module-common.c
monitor.c serial: poll the serial console with G_IO_HUP 2014-06-30 15:04:34 +02:00
nbd.c nbd: Handle NBD_OPT_LIST option. 2014-06-30 12:50:17 +02:00
numa.c numa: Reject configuration if not all node IDs are present 2014-06-29 18:59:42 +03:00
os-posix.c
os-win32.c
page_cache.c migration: Plug memory leak in migrate-set-cache-size command 2014-06-10 19:54:43 +04:00
qapi-schema.json mc146818rtc: add rtc-reset-reinjection QMP command 2014-06-29 18:59:35 +03:00
qdev-monitor.c
qdict-test-data.txt
qemu-bridge-helper.c qemu-bridge-helper: Fix fd leak in main() 2014-06-27 10:39:10 +02:00
qemu-char.c char: report frontend open/closed state in 'query-chardev' 2014-06-27 09:34:00 -04:00
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-doc.texi
qemu-file.c
qemu-img-cmds.hx
qemu-img.c cleanup QEMUOptionParameter 2014-06-16 17:23:21 +08:00
qemu-img.texi
qemu-io-cmds.c
qemu-io.c trace: Multi-backend tracing 2014-06-09 15:43:40 +02:00
qemu-log.c
qemu-nbd.c nbd: Shutdown socket before closing. 2014-06-30 12:50:12 +02:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx net: L2TPv3 transport 2014-06-27 10:39:10 +02:00
qemu-seccomp.c
qemu-tech.texi
qemu-timer.c
qemu.nsi
qemu.sasl
qmp-commands.hx mc146818rtc: add rtc-reset-reinjection QMP command 2014-06-29 18:59:35 +03:00
qmp.c qmp: add query-acpi-ospm-status command 2014-06-19 18:44:22 +03:00
qtest.c qtest: fix hex2nib for capital characters 2014-06-10 19:39:34 +04:00
README
rules.mak build-sys: introduce install-prog macro to install&strip binaries and use it 2014-06-24 20:01:24 +04:00
savevm.c savevm: check vmsd for migratability status 2014-06-25 23:54:57 +02:00
softmmu_template.h softmmu: move softmmu_template.h out of include/ 2014-06-05 16:10:33 +02:00
spice-qemu-char.c qemu-char: introduce qemu_chr_alloc 2014-06-23 11:12:28 -04:00
tcg-runtime.c
tci.c Merge remote-tracking branch 'remotes/bonzini/softmmu-smap' into staging 2014-06-05 21:06:14 +01:00
thread-pool.c
thunk.c
tpm.c
trace-events spapr_pci: Use XICS interrupt allocator and do not cache interrupts in PHB 2014-06-27 13:48:27 +02:00
translate-all.c Fix new typos (found by codespell) 2014-06-24 20:01:24 +04:00
translate-all.h
user-exec.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
VERSION
version.rc
vl.c numa: Keep track of NUMA nodes present on the command-line 2014-06-29 18:59:41 +03:00
vmstate.c vmstate: Add preallocation for migrating arrays (VMS_ALLOC flag) 2014-06-27 13:48:27 +02:00
xbzrle.c
xen-common-stub.c
xen-common.c
xen-hvm-stub.c xen-hvm: Fix xen_hvm_init() to adjust pc memory layout 2014-06-23 17:50:04 +03:00
xen-hvm.c xen-hvm: Handle machine opt max-ram-below-4g 2014-06-23 18:02:55 +03:00
xen-mapcache.c

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team