QEMU With E2K User Support
Go to file
Alex Williamson b0223e29af vfio-pci: Make host MSI-X enable track guest
Guests typically enable MSI-X with all of the vectors in the MSI-X
vector table masked.  Only when the vector is enabled does the vector
get unmasked, resulting in a vector_use callback.  These two points,
enable and unmask, correspond to pci_enable_msix() and request_irq()
for Linux guests.  Some drivers rely on VF/PF or PF/fw communication
channels that expect the physical state of the device to match the
guest visible state of the device.  They don't appreciate lazily
enabling MSI-X on the physical device.

To solve this, enable MSI-X with a single vector when the MSI-X
capability is enabled and immediate disable the vector.  This leaves
the physical device in exactly the same state between host and guest.
Furthermore, the brief gap where we enable vector 0, it fires into
userspace, not KVM, so the guest doesn't get spurious interrupts.
Ideally we could call VFIO_DEVICE_SET_IRQS with the right parameters
to enable MSI-X with zero vectors, but this will currently return an
error as the Linux MSI-X interfaces do not allow it.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org
2013-01-08 14:09:03 -07:00
audio softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
backends softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
block sheepdog: pass oid directly to send_pending_req() 2013-01-02 16:09:00 +01:00
bsd-user misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
default-configs target-sparc64: disable VGA cirrus 2012-10-27 14:36:04 +00:00
disas tci: Fix broken builds with TCG interpreter 2013-01-02 13:33:05 -06:00
docs docs: add spice-port-fqdn.txt 2012-12-17 14:01:41 +01:00
fpu softfloat: Implement uint64_to_float128 2013-01-05 10:12:50 +00:00
fsdev misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
gdb-xml
hw vfio-pci: Make host MSI-X enable track guest 2013-01-08 14:09:03 -07:00
include softfloat: Implement uint64_to_float128 2013-01-05 10:12:50 +00:00
ldscripts build: create ldscripts/ 2012-12-19 08:29:06 +01:00
libcacard misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
linux-headers linux-headers: Update to 3.7-rc5 2012-11-13 12:27:40 -07:00
linux-user linux-user: fix mips 32-on-64 prealloc case 2013-01-08 11:48:39 +01:00
net net: add missing include file 2012-12-22 12:06:48 +00:00
pc-bios Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 2012-12-20 08:19:40 +01:00
pixman@97336fad32 qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qapi misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qga misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
QMP qmp: add pull_event function 2012-10-24 10:26:22 +02:00
qom misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
roms Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 2012-12-20 08:19:40 +01:00
scripts build: Use separate makefile for "trace/" 2012-12-23 14:28:02 -06:00
slirp softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
stubs softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
sysconfigs/target
target-alpha Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
target-arm Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
target-cris misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
target-i386 Merge remote-tracking branch 'qemu-kvm/uq/master' into staging 2013-01-02 08:01:54 -06:00
target-lm32 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
target-m68k Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
target-microblaze fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-mips target-mips: Fix helper and tests for dot/cross-dot product instructions 2013-01-08 11:58:43 +01:00
target-openrisc fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-ppc Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
target-s390x Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
target-sh4 fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-sparc fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-unicore32 configure: allow disabling pixman if not needed 2012-12-23 14:38:52 -06:00
target-xtensa target-xtensa: fix search_pc for the last TB opcode 2012-12-22 12:09:24 +00:00
tcg tcg: Remove unneeded assertion 2013-01-02 11:23:21 -06:00
tests target-mips: Fix helper and tests for dot/cross-dot product instructions 2013-01-08 11:58:43 +01:00
trace build: Use separate makefile for "trace/" 2012-12-23 14:28:02 -06:00
ui spice: drop incorrect vm_change_state_handler() opaque 2013-01-04 14:38:05 +01:00
.exrc
.gitignore build: Use separate makefile for "trace/" 2012-12-23 14:28:02 -06:00
.gitmodules pixman: add submodule 2012-11-01 13:10:06 +01:00
.mailmap
acl.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
aes.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
aio-posix.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
aio-win32.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
arch_init.c ram: refactor ram_save_block() return value 2012-12-20 23:09:40 +01:00
async.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
balloon.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
bitmap.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bitops.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
block-migration.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
block.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockdev-nbd.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockdev.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockjob.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bt-host.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
bt-vhci.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
cache-utils.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
Changelog
cmd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
cmd.h
CODING_STYLE
compatfd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
configure usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
COPYING
COPYING.LIB
coroutine-gthread.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-sigaltstack.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-ucontext.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-win32.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
cpu-exec.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
cpus.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
cputlb.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
cutils.c cutils: change strtosz_suffix_unit function 2013-01-02 16:08:54 +01:00
device_tree.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
disas.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
dma-helpers.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
dump-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
dump.c exec: change RAM list to a TAILQ 2012-12-20 23:08:47 +01:00
envlist.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
error.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
event_notifier-posix.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
event_notifier-win32.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
exec.c Revert "virtio-pci: replace byte swap hack" 2013-01-06 18:30:17 +00:00
gdbstub.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
HACKING HACKING: List areas where we may rely on impdef C behaviour 2012-12-08 14:27:40 +00:00
hmp-commands.hx trace: Remove "info trace" from documents 2012-11-16 13:35:48 +01:00
hmp.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
hmp.h qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
host-utils.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
iohandler.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
ioport.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
iov.c iov: add qemu_iovec_concat_iov() 2013-01-02 15:58:09 +01:00
json-lexer.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
json-parser.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
json-streamer.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
kvm-all.c Merge branch 'master' of git://git.qemu.org/qemu into qom-cpu 2012-12-23 00:40:49 +01:00
kvm-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
LICENSE
main-loop.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
MAINTAINERS Merge branch 'qom-cpu' of git://repo.or.cz/qemu/afaerber 2012-12-28 16:08:23 +00:00
Makefile build: Use separate makefile for "trace/" 2012-12-23 14:28:02 -06:00
Makefile.objs tests: add gcov support 2013-01-06 08:15:08 +00:00
Makefile.target tci: Fix broken builds with TCG interpreter 2013-01-02 13:33:05 -06:00
memory_mapping-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
memory_mapping.c exec: change RAM list to a TAILQ 2012-12-20 23:08:47 +01:00
memory.c memory: introduce memory_region_test_and_clear_dirty 2012-12-20 23:09:39 +01:00
migration-exec.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-fd.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-tcp.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-unix.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration.c migration: merge QEMUFileBuffered into MigrationState 2012-12-20 23:09:40 +01:00
module.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
monitor.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
nbd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
notify.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
os-posix.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
os-win32.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
osdep.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
oslib-posix.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
oslib-win32.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
page_cache.c migration: move include files to include/migration/ 2012-12-19 08:31:32 +01:00
path.c
pci-ids.txt
qapi-schema-test.json
qapi-schema.json slirp: Add domain-search option to slirp's DHCP server 2012-11-15 10:27:14 +01:00
qbool.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qdict-test-data.txt
qdict.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-bridge-helper.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-char.c pty: unbreak libvirt 2013-01-03 12:53:41 -06:00
qemu-config.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-io.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-lock.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-sleep.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qemu-doc.texi Documentation: Update image format information 2012-11-30 11:33:24 +01:00
qemu-error.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qemu-img-cmds.hx qemu-img: document 'info --backing-chain' 2012-10-24 10:26:19 +02:00
qemu-img.c qemu-img: report size overflow error message 2013-01-02 16:08:56 +01:00
qemu-img.texi Documentation: Update image format information 2012-11-30 11:33:24 +01:00
qemu-io.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-log.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-nbd.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qemu-nbd.texi
qemu-option.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx spice-qemu-char: add spiceport chardev 2012-12-17 14:01:41 +01:00
qemu-progress.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-seccomp.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-sockets.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-tech.texi qemu-tech.texi: update implemented xtensa features list 2012-11-29 13:00:52 -06:00
qemu-thread-posix.c Fix semaphores fallback code 2012-12-29 12:27:36 +00:00
qemu-thread-win32.c win32: Switch thread abstraction to us TLS variable internally 2012-12-23 09:13:15 -06:00
qemu-timer-common.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-timer.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-tool.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-user.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qemu.sasl
qerror.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qfloat.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qint.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qjson.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qlist.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qmp-commands.hx Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-10-29 10:34:05 -05:00
qmp.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
qstring.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qtest.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
readline.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
README
rules.mak build: add $(TARGET_DIR) to "GEN config-target.h" lines 2012-12-19 08:29:06 +01:00
savevm.c savevm.c: cleanup system includes 2013-01-02 13:32:48 -06:00
spice-qemu-char.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
tcg-runtime.c
tci.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
thread-pool.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
thunk.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
TODO
trace-events uhci: stop using portio lists 2013-01-08 10:56:58 +01:00
trace.h build: Use separate makefile for "trace/" 2012-12-23 14:28:02 -06:00
translate-all.c translate-all.c: Use tb1->phys_hash_next directly in tb_remove 2012-12-22 12:06:24 +00:00
translate-all.h exec: move TB handling to translate-all.c 2012-12-16 08:28:41 +00:00
uri.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
user-exec.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
VERSION Open up 1.4 development branch 2012-12-03 14:08:40 -06:00
version.rc
vl.c net: clean up network at qemu process termination 2013-01-07 10:43:21 +01:00
xen-all.c xen: add missing include 2012-12-22 12:04:44 +00:00
xen-mapcache.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
xen-stub.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00

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

- QEMU team