Peter Maydell | 2f4325d | 2020-02-28 15:36:03 +0000 | [diff] [blame] | 1 | Managed start up options |
| 2 | ======================== |
| 3 | |
| 4 | In system mode emulation, it's possible to create a VM in a paused |
| 5 | state using the ``-S`` command line option. In this state the machine |
| 6 | is completely initialized according to command line options and ready |
| 7 | to execute VM code but VCPU threads are not executing any code. The VM |
| 8 | state in this paused state depends on the way QEMU was started. It |
| 9 | could be in: |
| 10 | |
| 11 | - initial state (after reset/power on state) |
| 12 | - with direct kernel loading, the initial state could be amended to execute |
| 13 | code loaded by QEMU in the VM's RAM and with incoming migration |
| 14 | - with incoming migration, initial state will be amended with the migrated |
| 15 | machine state after migration completes |
| 16 | |
| 17 | This paused state is typically used by users to query machine state and/or |
| 18 | additionally configure the machine (by hotplugging devices) in runtime before |
| 19 | allowing VM code to run. |
| 20 | |
| 21 | However, at the ``-S`` pause point, it's impossible to configure options |
| 22 | that affect initial VM creation (like: ``-smp``/``-m``/``-numa`` ...) or |
| 23 | cold plug devices. The experimental ``--preconfig`` command line option |
| 24 | allows pausing QEMU before the initial VM creation, in a "preconfig" state, |
| 25 | where additional queries and configuration can be performed via QMP |
| 26 | before moving on to the resulting configuration startup. In the |
| 27 | preconfig state, QEMU only allows a limited set of commands over the |
| 28 | QMP monitor, where the commands do not depend on an initialized |
| 29 | machine, including but not limited to: |
| 30 | |
| 31 | - ``qmp_capabilities`` |
| 32 | - ``query-qmp-schema`` |
| 33 | - ``query-commands`` |
| 34 | - ``query-status`` |
| 35 | - ``x-exit-preconfig`` |