Am 07.08.2012 08:41, schrieb David Gibson: > 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. > > Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
Reviewed-by: Andreas Färber <afaer...@suse.de> I'll put together a follow-up to show what I meant in the v1 thread. Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg