No description
Find a file
Anthony Liguori 893986fe94 main-loop: drop the BQL if the I/O appears to be spinning
The char-flow refactoring introduced a busy-wait that depended on
an action from the VCPU thread.  However, the VCPU thread could
never take that action because the busy-wait starved the VCPU thread
of the BQL because it never dropped the mutex while running select.

Paolo doesn't want to drop this optimization for fear that we will
stop detecting these busy waits.  I'm afraid to keep this optimization
even with the busy-wait fixed because I think a similar problem can
occur just with heavy I/O thread load manifesting itself as VCPU pauses.

As a compromise, introduce an artificial timeout after a thousand
iterations but print a rate limited warning when this happens.  This
let's us still detect when this condition occurs without it being
a fatal error.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Message-id: 1365169560-11012-1-git-send-email-aliguori@us.ibm.com
2013-04-05 12:53:33 -05:00
audio
backends qemu-char: Call fe_claim / fe_release when not using qdev chr properties 2013-04-04 19:21:25 -05:00
block qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount 2013-04-05 18:58:05 +02:00
bsd-user
default-configs VMXNET3 device implementation 2013-03-25 11:13:10 +01:00
disas Add moxie disassembler 2013-03-23 14:25:41 +00:00
docs trace: Provide a detailed event control interface 2013-03-28 14:19:57 +01:00
fpu
fsdev
gdb-xml
hw Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2013-04-05 12:52:48 -05:00
include Merge remote-tracking branch 'kwolf/for-anthony' into staging 2013-04-05 12:49:10 -05:00
ldscripts
libcacard
linux-headers linux-headers: Update to v3.9-rc2 2013-04-01 11:50:04 -06:00
linux-user linux-user: Don't omit comma for strace of rt_sigaction() 2013-04-05 14:40:54 +02:00
net qemu-char: Call fe_claim / fe_release when not using qdev chr properties 2013-04-04 19:21:25 -05:00
pc-bios ipxe: update binaries 2013-03-25 09:13:18 +01:00
pixman@97336fad32
po po: Update German translation 2013-04-04 00:28:37 +02:00
qapi
qga Fix typos and misspellings 2013-03-22 13:25:07 +01:00
QMP virtio,pci,qom 2013-03-26 16:16:43 -05:00
qobject qstring: add qstring_get_length() 2013-04-05 08:42:29 -04:00
qom virtio,pci,qom 2013-03-26 16:16:43 -05:00
roms virtio,pci,qom 2013-03-26 16:16:43 -05:00
scripts trace: [stderr] Port to generic event information and new control interface 2013-03-28 14:19:57 +01:00
slirp oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() 2013-04-02 11:47:37 -04:00
stubs stubs: Add a vmstate_dummy struct for CONFIG_USER_ONLY 2013-03-12 10:35:54 +01:00
sysconfigs/target
target-alpha cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-arm target-arm: Override do_interrupt for ARMv7-M profile 2013-03-12 10:35:55 +01:00
target-cris cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-i386 extract/unify the constant 0xfee00000 as APIC_DEFAULT_ADDRESS 2013-04-04 19:23:09 -05:00
target-lm32 target-lm32: use HELPER() macro 2013-03-18 19:40:34 +01:00
target-m68k cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-microblaze microblaze: Add support for the sleep insn 2013-04-02 10:47:29 +02:00
target-mips target-mips: fix rndrashift_short_acc and code for EXTR_ instructions 2013-03-17 01:06:34 +01:00
target-moxie target-moxie: set do_interrupt to a target-specific helper function 2013-03-31 18:26:31 +00:00
target-openrisc cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-ppc target-ppc: Use NARROW_MODE macro for tlbie 2013-03-22 15:28:54 +01:00
target-s390x target-s390: Fix SRNMT 2013-04-05 14:54:11 +02:00
target-sh4 cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-sparc cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-unicore32 cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
target-xtensa cpu: Replace do_interrupt() by CPUClass::do_interrupt method 2013-03-12 10:35:55 +01:00
tcg tcg/mips: Implement muls2_i32 2013-04-01 18:49:17 +02:00
tests test-visitor-serialization: Fix some memory leaks 2013-04-05 14:38:45 +02:00
tpm tpm: Fix several compiler warnings (redefined data types) 2013-04-03 15:06:03 -05:00
trace trace: rebuild generated-events.o when configuration changes 2013-03-28 14:19:57 +01:00
ui Merge remote-tracking branch 'luiz/queue/qmp' into staging 2013-04-02 14:07:35 -05:00
util Allow clock_gettime() monotonic clock to be utilized on more OS's 2013-04-04 20:22:45 -05:00
.exrc
.gitignore .gitignore: rename trace/generated-tracers.dtrace 2013-03-28 14:19:57 +01:00
.gitmodules
.mailmap
aio-posix.c
aio-win32.c
arch_init.c like acpi_table_install(), acpi_table_add() should propagate Errors 2013-04-04 19:23:08 -05:00
async.c aio: add a ThreadPool instance to AioContext 2013-03-15 16:07:50 +01:00
balloon.c
block-migration.c migration: run setup callbacks out of big lock 2013-03-11 13:32:01 +01:00
block.c block: clean up I/O throttling wait_time code 2013-04-05 18:58:05 +02:00
blockdev-nbd.c
blockdev.c block: keep I/O throttling slice time constant 2013-04-05 18:58:05 +02:00
blockjob.c
bt-host.c MinGW: Replace setsockopt by qemu_setsocketopt 2013-03-22 13:14:48 +01:00
bt-vhci.c
Changelog
cmd.c
cmd.h
CODING_STYLE
configure configure: remove unset variables 2013-04-02 14:05:15 -05:00
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-exec.c target-i386: Don't modify env->eflags around cpu_dump_state 2013-03-23 14:30:12 +00:00
cpus.c cpu: Pass CPUState to cpu_interrupt() 2013-03-12 10:35:55 +01:00
cputlb.c
device-hotplug.c
device_tree.c
disas.c Add moxie disassembler 2013-03-23 14:25:41 +00:00
dma-helpers.c
dump-stub.c
dump.c
exec.c exec: assert that RAMBlock size is non-zero 2013-03-26 21:02:17 +02:00
gdbstub.c qemu-char: Call fe_claim / fe_release when not using qdev chr properties 2013-04-04 19:21:25 -05:00
HACKING
hmp-commands.hx New QMP command query-cpu-max and HMP command cpu_max 2013-03-25 16:21:33 -04:00
hmp.c Merge remote-tracking branch 'quintela/migration.next' into staging 2013-03-26 13:38:00 -05:00
hmp.h New QMP command query-cpu-max and HMP command cpu_max 2013-03-25 16:21:33 -04:00
iohandler.c
ioport.c
kvm-all.c cpu: Pass CPUState to cpu_interrupt() 2013-03-12 10:35:55 +01:00
kvm-stub.c
LICENSE
main-loop.c main-loop: drop the BQL if the I/O appears to be spinning 2013-04-05 12:53:33 -05:00
MAINTAINERS Add top level changes for moxie 2013-03-23 14:25:42 +00:00
Makefile trace: Provide a generic tracing event descriptor 2013-03-28 14:19:57 +01:00
Makefile.objs Support for TPM command line options 2013-03-12 13:40:11 -05:00
Makefile.target
memory.c memory: fix a bug of detection of memory region collision 2013-03-22 13:21:28 +01:00
memory_mapping-stub.c
memory_mapping.c
migration-exec.c migration: eliminate s->migration_file 2013-03-11 13:32:03 +01:00
migration-fd.c migration: eliminate s->migration_file 2013-03-11 13:32:03 +01:00
migration-tcp.c migration: eliminate s->migration_file 2013-03-11 13:32:03 +01:00
migration-unix.c migration: eliminate s->migration_file 2013-03-11 13:32:03 +01:00
migration.c oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() 2013-04-02 11:47:37 -04:00
monitor.c hmp: human-monitor-command: stop using the Memory chardev driver 2013-04-05 08:42:29 -04:00
nbd.c oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() 2013-04-02 11:47:37 -04:00
os-posix.c
os-win32.c
page_cache.c page_cache: dup memory on insert 2013-03-11 13:32:03 +01:00
qapi-schema-test.json
qapi-schema.json qapi schema: add AcpiTableOptions 2013-04-04 19:23:08 -05:00
qdev-monitor.c
qdict-test-data.txt
qemu-bridge-helper.c qemu-bridge-helper: force usage of a very high MAC address for the bridge 2013-03-28 12:58:52 -05:00
qemu-char.c qemu-char: eliminate busy waiting on can_read returning zero 2013-04-05 12:53:07 -05:00
qemu-coroutine-io.c
qemu-coroutine-lock.c coroutine: use AioContext for CoQueue BH 2013-03-15 16:07:51 +01:00
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-doc.texi
qemu-img-cmds.hx
qemu-img.c block: Add options QDict to bdrv_open() prototype 2013-03-15 16:07:49 +01:00
qemu-img.texi
qemu-io.c block: Add options QDict to bdrv_file_open() prototypes 2013-03-22 17:51:31 +01:00
qemu-log.c
qemu-nbd.c block: Add options QDict to bdrv_open() prototype 2013-03-15 16:07:49 +01:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx help: add docs for missing 'queues' option of tap 2013-04-03 15:09:07 -05:00
qemu-seccomp.c
qemu-tech.texi
qemu-timer.c
qemu.sasl
qmp-commands.hx Merge remote-tracking branch 'quintela/migration.next' into staging 2013-03-26 13:38:00 -05:00
qmp.c
qtest.c qtest: use synchronous I/O for char device 2013-03-26 10:08:12 -05:00
readline.c
README
rules.mak
savevm.c oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() 2013-04-02 11:47:37 -04:00
spice-qemu-char.c spice-qemu-char: Drop hackish vmc_register on spice_chr_write 2013-03-27 10:26:50 -05:00
tcg-runtime.c
tci.c
thread-pool.c threadpool: drop global thread pool 2013-03-15 16:07:51 +01:00
thunk.c
trace-events Merge remote-tracking branch 'stefanha/block' into staging 2013-03-28 12:57:37 -05:00
translate-all.c tcg: Fix occasional TCG broken problem when ldst optimization enabled 2013-03-22 21:38:21 +01:00
translate-all.h
user-exec.c
VERSION
version.rc
vl.c acpi_table_add(): accept QemuOpts and parse it with OptsVisitor 2013-04-04 19:23:08 -05:00
xbzrle.c
xen-all.c cpu: Move halted and interrupt_request fields to CPUState 2013-03-12 10:35:55 +01:00
xen-mapcache.c xen-mapcache: pass the right size argument to test_bits 2013-04-03 11:51:53 +00:00
xen-stub.c

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

- QEMU team