afbe70535f
This function will be used to avoid recursive locking of the iothread lock whenever address_space_rw/ld*/st* are called with the BQL held, which is almost always the case. Tracking whether the iothread is owned is very cheap (just use a TLS variable) but requires some care because now the lock must always be taken with qemu_mutex_lock_iothread(). Previously this wasn't the case. Outside TCG mode this is not a problem. In TCG mode, we need to be careful and avoid the "prod out of compiled code" step if already in a VCPU thread. This is easily done with a check on current_cpu, i.e. qemu_in_vcpu_thread(). Hopefully, multithreaded TCG will get rid of the whole logic to kick VCPUs whenever an I/O event occurs! Cc: Frederic Konrad <fred.konrad@greensocs.com> Message-Id: <1434646046-27150-3-git-send-email-pbonzini@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
||
---|---|---|
.. | ||
arch-query-cpu-def.c | ||
bdrv-commit-all.c | ||
chr-baum-init.c | ||
chr-msmouse.c | ||
chr-testdev.c | ||
clock-warp.c | ||
cpu-get-clock.c | ||
cpu-get-icount.c | ||
cpus.c | ||
dump.c | ||
fd-register.c | ||
fdset-add-fd.c | ||
fdset-find-fd.c | ||
fdset-get-fd.c | ||
fdset-remove-fd.c | ||
gdbstub.c | ||
get-fd.c | ||
get-next-serial.c | ||
get-vm-name.c | ||
iothread-lock.c | ||
is-daemonized.c | ||
kvm.c | ||
machine-init-done.c | ||
Makefile.objs | ||
migr-blocker.c | ||
mon-is-qmp.c | ||
mon-printf.c | ||
monitor-init.c | ||
notify-event.c | ||
qemu-chr-open-spice.c | ||
qmp_pc_dimm_device_list.c | ||
qtest.c | ||
reset.c | ||
runstate-check.c | ||
set-fd-handler.c | ||
slirp.c | ||
sysbus.c | ||
uuid.c | ||
vc-init.c | ||
vm-stop.c | ||
vmstate.c |