adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Paolo Bonzini 6b49809c59 cpus: fix deadlock and segfault in qemu_mutex_lock_iothread
When two threads (other than the low-priority TCG VCPU thread)
are competing for the iothread lock, a deadlock can happen.  This
is because iothread_requesting_mutex is set to false by the first
thread that gets the mutex, and then the VCPU thread might never
yield from the execution loop.  If iothread_requesting_mutex is
changed from a bool to a counter, the deadlock is fixed.

However, there is another bug in qemu_mutex_lock_iothread that
can be triggered by the new call_rcu thread.  The bug happens
if qemu_mutex_lock_iothread is called before the CPUs are
created.  In that case, first_cpu is NULL and the caller
segfaults in qemu_mutex_lock_iothread.  To fix this, just
do not do the kick if first_cpu is NULL.

Reported-by: Leon Alrae <leon.alrae@imgtec.com>
Reported-by: Andreas Gustafsson <gson@gson.org>
Tested-by: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-03-02 10:57:07 +01:00
audio
backends
block iscsi: Handle write protected case in reopen 2015-02-27 18:26:31 +01:00
bsd-user
default-configs Give ivshmem its own config option 2015-02-27 15:17:46 +01:00
disas disas/sh4: Fix warning caused by missing 'static' attribute 2015-02-10 10:26:05 +03:00
docs rcu: add g_free_rcu 2015-02-16 17:30:19 +01:00
dtc@bc895d6d09
fpu
fsdev
gdb-xml
hw virtio-scsi: Allocate op blocker reason before blocking 2015-03-02 10:57:07 +01:00
include block: Forbid bdrv_set_aio_context outside BQL 2015-02-27 14:43:45 +01:00
libcacard libcacard: stop linking against every single 3rd party library 2015-02-10 09:27:20 +03:00
libdecnumber
linux-headers
linux-user linux-user: correct stat structure in MIPS N32 2015-02-13 14:11:29 +00:00
migration migration: Fix warnings caused by missing 'static' attribute 2015-02-10 10:26:05 +03:00
net Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
pc-bios seabios: update to 1.8.0 release 2015-02-19 09:33:03 +01:00
pixman@87eea99e44
po
qapi
qga qemu-ga-win: Fail loudly on bare 'set-time' 2015-02-17 16:21:50 -06:00
qobject
qom error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
roms seabios: update to 1.8.0 release 2015-02-19 09:33:03 +01:00
scripts Makefile: don't silence mak file test with V=1 2015-02-27 19:42:45 +01:00
slirp
stubs stubs: Fix warning caused by missing include statement 2015-02-10 10:26:05 +03:00
sysconfigs/target
target-alpha tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-arm Convert to linked list. 2015-02-13 11:44:50 +00:00
target-cris tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-i386 error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
target-lm32 tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-m68k tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-microblaze tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-mips target-mips: pass 0 instead of -1 as rs in microMIPS LUI instruction 2015-02-13 14:11:29 +00:00
target-moxie tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-openrisc tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-ppc tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-s390x s390x/helper: Remove s390_cpu_physical_memory_map 2015-02-18 09:37:15 +01:00
target-sh4 tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-sparc error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
target-tricore tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-unicore32 tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
target-xtensa tcg: Introduce tcg_op_buf_count and tcg_op_buf_full 2015-02-12 21:21:38 -08:00
tcg tcg: Remove unused opcodes 2015-02-12 21:21:38 -08:00
tests - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
trace
ui hmp: Normalize HMP command handler names 2015-02-25 13:14:37 +00:00
util Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
.exrc
.gitignore
.gitmodules
.mailmap
.travis.yml
CODING_STYLE
COPYING
COPYING.LIB
Changelog
HACKING
LICENSE
MAINTAINERS
Makefile Makefile: don't silence mak file test with V=1 2015-02-27 19:42:45 +01:00
Makefile.objs
Makefile.target Makefile.target: binary depends on config-devices 2015-02-27 19:42:45 +01:00
README
VERSION
accel.c
aio-posix.c
aio-win32.c
arch_init.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
async.c
balloon.c balloon: Fix typo 2015-02-23 10:56:09 -05:00
block.c block: Keep bdrv_check*_request()'s return value 2015-02-16 15:07:19 +00:00
blockdev-nbd.c
blockdev.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
blockjob.c
bootdevice.c bootdevice: fix segment fault when booting guest with '-kernel' and '-initrd' 2015-02-27 15:15:56 +01:00
bt-host.c
bt-vhci.c
configure
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-exec.c - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
cpus.c cpus: fix deadlock and segfault in qemu_mutex_lock_iothread 2015-03-02 10:57:07 +01:00
cputlb.c exec: RCUify AddressSpaceDispatch 2015-02-16 17:30:19 +01:00
device-hotplug.c hmp: Name HMP command handler functions hmp_COMMAND() 2015-02-18 11:58:30 +01:00
device_tree.c
disas.c
dma-helpers.c
dump.c
exec.c Convert ram_list to RCU 2015-02-16 17:31:55 +01:00
gdbstub.c
hmp-commands.hx hmp: Name HMP command handler functions hmp_COMMAND() 2015-02-18 11:58:30 +01:00
hmp.c Merge remote-tracking branch 'remotes/qmp-unstable/queue/qmp' into staging 2015-02-26 12:16:46 +00:00
hmp.h hmp: Name HMP command handler functions hmp_COMMAND() 2015-02-18 11:58:30 +01:00
iohandler.c
ioport.c
iothread.c
kvm-all.c kvm: g_malloc() can't fail, bury dead error handling 2015-02-10 09:27:20 +03:00
kvm-stub.c
main-loop.c
memory.c memory: keep the owner of the AddressSpace alive until do_address_space_destroy 2015-02-11 21:48:44 +01:00
memory_mapping.c
module-common.c
monitor.c Merge remote-tracking branch 'remotes/qmp-unstable/queue/qmp' into staging 2015-02-26 12:16:46 +00:00
nbd.c nbd: Drop BDS backpointer 2015-02-16 14:36:03 +00:00
numa.c numa: Avoid qerror_report_err() outside QMP command handlers 2015-02-18 10:51:37 +01:00
os-posix.c
os-win32.c
page_cache.c
qapi-schema.json
qdev-monitor.c hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
qdict-test-data.txt
qemu-bridge-helper.c
qemu-char.c qemu-char: Avoid qerror_report_err() outside QMP command handlers 2015-02-18 10:51:40 +01:00
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-doc.texi
qemu-img-cmds.hx
qemu-img.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
qemu-img.texi
qemu-io-cmds.c qemu-io: Use BlockBackend 2015-02-16 15:07:19 +00:00
qemu-io.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
qemu-log.c
qemu-nbd.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx
qemu-seccomp.c
qemu-tech.texi
qemu-timer.c
qemu.nsi
qemu.sasl
qjson.c QJSON: fix typo in author's email address 2015-02-10 09:27:20 +03:00
qmp-commands.hx
qmp.c vnc: auto assian an id when calling change vnc qmp interface 2015-02-16 08:47:59 +01:00
qtest.c
rules.mak
savevm.c hmp: Normalize HMP command handler names 2015-02-25 13:14:37 +00:00
softmmu_template.h exec: make iotlb RCU-friendly 2015-02-16 17:30:19 +01:00
spice-qemu-char.c spice: Add missing 'static' attribute 2015-02-10 10:26:05 +03:00
tcg-runtime.c
tci.c tcg: Remove unused opcodes 2015-02-12 21:21:38 -08:00
thread-pool.c
thunk.c
tpm.c tpm: Avoid qerror_report_err() outside QMP command handlers 2015-02-18 10:51:37 +01:00
trace-events
translate-all.c translate-all: Use g_try_malloc() for dynamic translator buffer 2015-02-10 09:27:21 +03:00
translate-all.h
user-exec.c
version.rc
vl.c timer: replace time() with QEMU_CLOCK_HOST 2015-02-27 15:15:50 +01:00
xen-common-stub.c
xen-common.c
xen-hvm-stub.c
xen-hvm.c
xen-mapcache.c

README

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

- QEMU team