| @node managed_startup |
| @section Managed start up options |
| |
| In system mode emulation, it's possible to create a VM in a paused state using |
| the -S command line option. In this state the machine is completely initialized |
| according to command line options and ready to execute VM code but VCPU threads |
| are not executing any code. The VM state in this paused state depends on the way |
| QEMU was started. It could be in: |
| @table @asis |
| @item initial state (after reset/power on state) |
| @item with direct kernel loading, the initial state could be amended to execute |
| code loaded by QEMU in the VM's RAM and with incoming migration |
| @item with incoming migration, initial state will by amended with the migrated |
| machine state after migration completes. |
| @end table |
| |
| This paused state is typically used by users to query machine state and/or |
| additionally configure the machine (by hotplugging devices) in runtime before |
| allowing VM code to run. |
| |
| However, at the -S pause point, it's impossible to configure options that affect |
| initial VM creation (like: -smp/-m/-numa ...) or cold plug devices. The |
| experimental --preconfig command line option allows pausing QEMU |
| before the initial VM creation, in a ``preconfig'' state, where additional |
| queries and configuration can be performed via QMP before moving on to |
| the resulting configuration startup. In the preconfig state, QEMU only allows |
| a limited set of commands over the QMP monitor, where the commands do not |
| depend on an initialized machine, including but not limited to: |
| @table @asis |
| @item qmp_capabilities |
| @item query-qmp-schema |
| @item query-commands |
| @item query-status |
| @item x-exit-preconfig |
| @end table |