QEMU With E2K User Support
Go to file
David Gibson be52202902 Allow QEMUMachine to override reset sequencing
qemu_system_reset() function always performs the same basic actions on
all machines.  This includes running all the reset handler hooks,
however the order in which these will run is not always easily predictable.

This patch splits the core of qemu_system_reset() - the invocation of
the reset handlers - out into a new qemu_devices_reset() function.
qemu_system_reset() will usually call qemu_devices_reset(), but that
can be now overriden by a new reset method in the QEMUMachine
structure.

Individual machines can use this reset method, if necessary, to
perform any extra, machine specific initializations which have to
occur before or after the bulk of the reset handlers.  It's expected
that the method will call qemu_devices_reset() at some point, but if
the machine has really strange ordering requirements between devices
resets it could even override that with it's own reset sequence (with
great care, obviously).

For a specific example of when this might be needed: a number of
machines (but not PC) load images specified with -kernel or -initrd
directly into the machine RAM before booting the guest.  This mostly
works at the moment, but to make this actually safe requires that this
load occurs after peripheral devices are reset - otherwise they could
have active DMAs in progress which would clobber the in memory images.
Some machines (notably pseries) also have other entry conditions which
need to be set up as the last thing before executing in guest space -
some of this could be considered "emulated firmware" in the sense that
the actions of the firmware are emulated directly by qemu rather than
by executing a firmware image within the guest.  When the platform's
firmware to OS interface is sufficiently well specified, this saves
time both in implementing the "firmware" and executing it.

aliguori: don't unconditionally dereference current_machine

Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-08-16 13:41:17 -05:00
audio audio: Unbreak capturing in mixemu case 2012-07-16 18:08:36 +04:00
block iscsi: Fix NULL dereferences / races between task completion and abort 2012-08-15 13:16:22 +02:00
bsd-user Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
default-configs arm: Move some ARM devices into libhw 2012-08-13 16:13:02 +01:00
docs docs: Fix spelling (propery -> property) 2012-08-15 15:18:54 +01:00
fpu
fsdev
gdb-xml
hw Allow QEMUMachine to override reset sequencing 2012-08-16 13:41:17 -05:00
include/qemu Merge remote-tracking branch 'quintela/migration-next-20120808' into staging 2012-08-13 16:02:11 -05:00
libcacard libcacard: build fixes 2012-06-21 20:04:24 +00:00
linux-headers
linux-user linux-user: ARM: Ignore immediate value for svc in thumb mode 2012-08-14 20:26:56 +01:00
net qapi: avoid reserved keywords 2012-08-09 18:34:57 +00:00
pc-bios pseries: Update SLOF firmware image 2012-08-15 19:43:16 +02:00
qapi error: drop error_get_qobject()/error_set_qobject() 2012-08-13 14:17:53 -03:00
qga build: Fix linking failure for qemu-ga 2012-07-29 08:41:53 +00:00
QMP qmp: add SUSPEND_DISK event 2012-08-13 16:10:18 -03:00
qom qom: Reimplement Interfaces 2012-08-13 11:20:41 +02:00
roms pseries: Update SLOF firmware image 2012-08-15 19:43:16 +02:00
scripts Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2012-08-15 13:25:54 -05:00
slirp slirp: fix build on mingw32 2012-08-06 19:31:55 -05:00
sysconfigs/target
target-alpha alpha-linux-user: Work around hosted mmap allocation problems 2012-08-04 09:37:48 -07:00
target-arm target-arm: Fix typos in comments 2012-08-10 14:37:28 +01:00
target-cris
target-i386 win32: provide separate macros for weak decls and definitions 2012-08-15 13:26:03 -05:00
target-lm32
target-m68k
target-microblaze qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-mips MIPS: Correct FCR0 initialization 2012-08-09 18:36:19 +00:00
target-openrisc target-or32: Add linux user support 2012-07-27 21:13:05 +00:00
target-ppc Merge remote-tracking branch 'agraf/ppc-for-upstream' into staging 2012-08-15 14:59:21 -05:00
target-s390x s390: provide interface for service interrupt/introduce interrupt.c 2012-08-15 17:47:09 +02:00
target-sh4
target-sparc qemu-log: use LOG_UNIMP for some target CPU cases 2012-06-21 18:45:22 +00:00
target-unicore32 unicore32-softmmu: Add a minimal curses screen support 2012-08-11 09:37:05 +00:00
target-xtensa Merge branch 'x86cpu_qom_tcg_v2' of git://github.com/imammedo/qemu 2012-08-09 18:44:49 +00:00
tcg tci: don't write zero for reloc in tci_out_label 2012-06-24 12:19:24 +00:00
tests check-qjson: add test for large JSON objects 2012-08-16 13:41:15 -05:00
trace trace/simple: Replace asprintf by g_strdup_printf 2012-08-14 13:19:57 +01:00
ui net: inet_connect(), inet_connect_opts(): add in_progress argument 2012-08-13 13:20:34 -03:00
.gitignore .gitignore update 2012-07-07 09:04:42 +00:00
.gitmodules
.mailmap
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c
alpha-dis.c
alpha.ld
arch_init.c Merge remote-tracking branch 'quintela/migration-next-20120808' into staging 2012-08-13 16:02:11 -05:00
arch_init.h win32: provide separate macros for weak decls and definitions 2012-08-15 13:26:03 -05:00
arm-dis.c
arm.ld
async.c async: Use bool for boolean struct members and remove a hole 2012-05-01 10:13:25 +01:00
balloon.c
balloon.h
bitmap.c
bitmap.h
bitops.c
bitops.h bitops: drop volatile qualifier 2012-08-04 15:51:23 +00:00
block_int.h block: block_int: include qerror.h 2012-08-13 13:20:50 -03:00
block-migration.c savevm: split save_live into stage2 and stage3 2012-07-20 08:19:27 +02:00
block-migration.h
block.c block: Flush parent to OS with cache=unsafe 2012-08-15 15:14:43 +02:00
block.h block: add BLOCK_O_CHECK for qemu-img check 2012-08-10 10:25:12 +02:00
blockdev.c blockdev: flip default cache mode from writethrough to writeback 2012-08-10 10:25:12 +02:00
blockdev.h blockdev: Don't limit DriveInfo serial to 20 characters 2012-07-17 16:48:32 +02:00
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c
buffered_file.h
cache-utils.c
cache-utils.h
Changelog
cmd.c
cmd.h
CODING_STYLE
compatfd.c
compatfd.h
compiler.h win32: provide separate macros for weak decls and definitions 2012-08-15 13:26:03 -05:00
config.h
configure Adding support for libseccomp in configure and Makefile (v8) 2012-08-16 13:41:16 -05:00
console.c console: Implementing blinking of cursor 2012-07-14 10:49:01 +00:00
console.h
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c configure: Split valgrind test into pragma test and valgrind.h test 2012-07-31 20:04:42 +00:00
coroutine-win32.c
cpu-all.h x86: switch to AREG0 free mode 2012-08-14 19:01:26 +00:00
cpu-common.h cpu-common.h: Remove a pointless ifndef CONFIG_USER_ONLY 2012-07-02 10:10:07 +01:00
cpu-defs.h cpu: Move thread_kicked to CPUState 2012-08-02 18:12:17 +02:00
cpu-exec.c unicore32-softmmu: Make UniCore32 cpuid & exceptions correct and runable 2012-08-11 09:36:56 +00:00
cpus.c kvm: Decouple 'async interrupt delivery' from 'kernel irqchip' 2012-08-09 16:16:53 +03:00
cpus.h
cputlb.c cputlb.c: Fix out of date comment 2012-08-15 15:18:54 +01:00
cputlb.h
cris-dis.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cursor.c
cutils.c block: Enable qemu_open/close to work with fd sets 2012-08-15 13:16:22 +02:00
def-helper.h
device_tree.c device_tree: Add support for reading device tree properties 2012-07-20 13:34:50 +01:00
device_tree.h device_tree: Add support for reading device tree properties 2012-07-20 13:34:50 +01:00
dis-asm.h
disas.c disas: Fix printing of addresses in disassembly 2012-07-14 10:32:34 +00:00
disas.h
dma-helpers.c dma: Fix stupid typo/thinko 2012-08-16 13:41:16 -05:00
dma.h Avoid returning void 2012-07-28 09:23:11 +00:00
dump-stub.c
dump.c
dump.h
dyngen-exec.h
elf.h target-or32: Add target stubs and QOM cpu 2012-07-27 21:12:55 +00:00
envlist.c
envlist.h
error.c error, qerror: drop QDict member 2012-08-13 14:17:53 -03:00
error.h error, qerror: pass desc string to error calls 2012-08-13 14:17:53 -03:00
event_notifier.c event_notifier: add event_notifier_set_handler 2012-07-12 14:08:10 +03:00
event_notifier.h event_notifier: add event_notifier_set_handler 2012-07-12 14:08:10 +03:00
exec-all.h cleanup cpu_set_debug_excp_handler 2012-06-25 15:37:15 +02:00
exec-memory.h
exec-obsolete.h Maintain the number of dirty pages 2012-06-29 13:31:07 +02:00
exec.c memory: add -machine dump-guest-core=on|off 2012-08-16 13:41:15 -05:00
gdbstub.c target-or32: Add gdb stub support 2012-07-27 21:13:04 +00:00
gdbstub.h
gen-icount.h
HACKING
hmp-commands.hx Add migrate_set_cache_size command 2012-08-08 13:51:12 +02:00
hmp.c Merge remote-tracking branch 'qmp/queue/qmp' into staging 2012-08-13 16:12:35 -05:00
hmp.h Merge remote-tracking branch 'qmp/queue/qmp' into staging 2012-08-13 16:12:35 -05:00
host-utils.c
host-utils.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld set SEARCH_PATH for the linker script from output of ld --verbose -v 2009-07-27 14:10:56 -05:00
input.c
int128.h
iohandler.c
ioport.c
ioport.h
iorange.h
iov.c iov_send_recv(): Handle zero bytes case even if OS does not 2012-08-15 15:21:33 +01:00
iov.h
json-lexer.c
json-lexer.h
json-parser.c json-parser: don't replicate tokens at each level of recursion 2012-08-16 13:41:15 -05:00
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: Decouple 'GSI routing' from 'kernel irqchip' 2012-08-09 16:16:57 +03:00
kvm-stub.c kvm: Decouple 'GSI routing' from 'kernel irqchip' 2012-08-09 16:16:57 +03:00
kvm.h kvm: Add documentation comment for kvm_irqchip_in_kernel() 2012-08-09 16:16:58 +03:00
libfdt_env.h
LICENSE
linux-aio.c
lm32-dis.c
m68k-dis.c
m68k.ld
main-loop.c
main-loop.h
MAINTAINERS MAINTAINERS: Update email address for Stefan Hajnoczi 2012-08-14 07:34:01 -05:00
Makefile Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2012-08-15 13:25:54 -05:00
Makefile.dis build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.hw build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.objs Adding support for libseccomp in configure and Makefile (v8) 2012-08-16 13:41:16 -05:00
Makefile.target build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
Makefile.user build: get dependency file directories from object file names 2012-07-28 09:16:09 +00:00
memory_mapping-stub.c
memory_mapping.c
memory_mapping.h
memory.c memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
memory.h memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
microblaze-dis.c
migration-exec.c
migration-fd.c
migration-tcp.c migration: don't rely on any QERR_SOCKET_* 2012-08-13 13:20:39 -03:00
migration-unix.c
migration.c Add XBZRLE statistics 2012-08-08 13:51:12 +02:00
migration.h Add XBZRLE statistics 2012-08-08 13:51:12 +02:00
mips-dis.c
mips.ld
module.c
module.h
monitor.c monitor: Clean up fd sets on monitor disconnect 2012-08-15 13:16:22 +02:00
monitor.h block: Enable qemu_open/close to work with fd sets 2012-08-15 13:16:22 +02:00
nbd.c net: inet_connect(), inet_connect_opts(): add in_progress argument 2012-08-13 13:20:34 -03:00
nbd.h
net.c Merge remote-tracking branch 'stefanha/net' into staging 2012-08-03 13:54:05 -05:00
net.h net: cleanup deliver/deliver_iov func pointers 2012-08-01 13:32:11 +01:00
notify.c
notify.h
os-posix.c fips: fix build on !Linux 2012-08-03 18:28:37 -05:00
os-win32.c
osdep.c osdep: Fix compilation failure on BSD systems 2012-08-16 13:41:16 -05:00
osdep.h memory: add -machine dump-guest-core=on|off 2012-08-16 13:41:15 -05:00
oslib-posix.c s390: autodetect map private 2012-07-10 18:27:33 +02:00
oslib-win32.c
page_cache.c Add cache handling functions 2012-08-08 13:51:12 +02:00
path.c
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
pflib.c
pflib.h
poison.h target-or32: Add target stubs and QOM cpu 2012-07-27 21:12:55 +00:00
posix-aio-compat.c
ppc64.ld
ppc-dis.c
ppc.ld
qapi-schema-guest.json qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
qapi-schema-test.json
qapi-schema.json qapi: Introduce add-fd, remove-fd, query-fdsets 2012-08-15 10:48:57 +02:00
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu_socket.h net: inet_connect(), inet_connect_opts(): add in_progress argument 2012-08-13 13:20:34 -03:00
qemu-aio.h
qemu-barrier.h
qemu-bridge-helper.c net: Add interface to bridge when SIOCBRADDIF isn't available 2012-08-01 12:28:51 +01:00
qemu-char.c qemu-char: Add MSG_CMSG_CLOEXEC flag to recvmsg 2012-08-15 10:48:57 +02:00
qemu-char.h
qemu-common.h block: Enable qemu_open/close to work with fd sets 2012-08-15 13:16:22 +02:00
qemu-config.c Command line support for seccomp with -sandbox (v8) 2012-08-16 13:41:16 -05:00
qemu-config.h Command line support for seccomp with -sandbox (v8) 2012-08-16 13:41:16 -05:00
qemu-coroutine-int.h
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-coroutine.h
qemu-doc.texi iscsi: Pick default initiator-name based on the name of the VM 2012-08-09 15:04:09 +02:00
qemu-error.c
qemu-error.h
qemu-file.h
qemu-ga.c error: drop error_get_qobject()/error_set_qobject() 2012-08-13 14:17:53 -03:00
qemu-img-cmds.hx
qemu-img.c block: add BLOCK_O_CHECK for qemu-img check 2012-08-10 10:25:12 +02:00
qemu-img.texi
qemu-io.c qemu-io: add "abort" command to simulate program crash 2012-08-06 22:39:14 +02:00
qemu-lock.h
qemu-log.c qemu-log: fix x86 and user logging 2012-07-14 11:53:03 +00:00
qemu-log.h qemu-log: fix x86 and user logging 2012-07-14 11:53:03 +00:00
qemu-nbd.c qemu-nbd: add --cache and --aio options 2012-07-24 09:31:53 +02:00
qemu-nbd.texi Replace Qemu by QEMU in user visible documentation 2012-04-07 13:58:06 +00:00
qemu-objects.h
qemu-option-internal.h expose QemuOpt and QemuOpts struct definitions to interested parties 2012-07-23 11:55:17 +01:00
qemu-option.c Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
qemu-option.h Support 'help' as a synonym for '?' in command line options 2012-08-02 13:16:42 -05:00
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx Command line support for seccomp with -sandbox (v8) 2012-08-16 13:41:16 -05:00
qemu-os-posix.h
qemu-os-win32.h
qemu-progress.c
qemu-queue.h
qemu-seccomp.c Adding qemu-seccomp.[ch] (v8) 2012-08-16 13:41:16 -05:00
qemu-seccomp.h Adding qemu-seccomp.[ch] (v8) 2012-08-16 13:41:16 -05:00
qemu-sockets.c migration: don't rely on any QERR_SOCKET_* 2012-08-13 13:20:39 -03:00
qemu-tech.texi doc: Fix indefinite article an -> a before nouns that begin with 'h' 2012-07-17 15:40:14 -05:00
qemu-thread-posix.c qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-thread-posix.h
qemu-thread-win32.c qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-thread-win32.h
qemu-thread.h qemu-thread: Let qemu_thread_is_self() return bool 2012-08-02 18:11:11 +02:00
qemu-timer-common.c
qemu-timer.c qemu_rearm_alarm_timer: do not call rearm if the next deadline is INT64_MAX 2012-08-09 18:42:38 +00:00
qemu-timer.h
qemu-tls.h
qemu-tool.c block: Enable qemu_open/close to work with fd sets 2012-08-15 13:16:22 +02:00
qemu-user.c block: Enable qemu_open/close to work with fd sets 2012-08-15 13:16:22 +02:00
qemu-x509.h
qemu-xattr.h
qemu.sasl
qerror.c error, qerror: drop QDict member 2012-08-13 14:17:53 -03:00
qerror.h error, qerror: drop QDict member 2012-08-13 14:17:53 -03:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c qlist: add qlist_size() 2012-08-16 13:41:15 -05:00
qlist.h qlist: add qlist_size() 2012-08-16 13:41:15 -05:00
qmp-commands.hx qapi: Introduce add-fd, remove-fd, query-fdsets 2012-08-15 10:48:57 +02:00
qmp.c win32: provide separate macros for weak decls and definitions 2012-08-15 13:26:03 -05:00
qobject.h
qstring.c
qstring.h
qtest.c
qtest.h
range.h
readline.c
readline.h
README
rules.mak Support using a different compiler for Objective-C files 2012-08-16 13:41:15 -05:00
s390-dis.c
s390.ld
savevm.c Merge remote-tracking branch 'agraf/ppc-for-upstream' into staging 2012-08-15 14:59:21 -05:00
sh4-dis.c
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
softmmu-semi.h
sparc64.ld
sparc-dis.c
sparc.ld Fix linker scripts 2011-08-27 15:42:35 +00:00
spice-qemu-char.c
sysemu.h Allow QEMUMachine to override reset sequencing 2012-08-16 13:41:17 -05:00
targphys.h targphys.h: Define TARGET_PRI*PHYS format specifier macros 2012-07-14 10:35:48 +00:00
tcg-runtime.c
tci-dis.c
tci.c tci: Support INDEX_op_bswap64_i64 2012-06-22 10:34:21 +01:00
thunk.c
thunk.h
TODO
trace-events pseries: Add PCI MSI/MSI-X support 2012-08-15 19:43:16 +02:00
translate-all.c
uboot_image.h
user-exec.c user: fix accidental AREG0 use 2012-08-09 18:34:57 +00:00
VERSION
version.rc
vgafont.h
vl.c Allow QEMUMachine to override reset sequencing 2012-08-16 13:41:17 -05:00
vmstate.h savevm: split save_live into stage2 and stage3 2012-07-20 08:19:27 +02:00
x86_64.ld
xen-all.c memory: pass EventNotifier, not eventfd 2012-07-12 14:08:10 +03:00
xen-mapcache.c
xen-mapcache.h
xen-stub.c

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

- QEMU team