mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
docs/migration: Split "Debugging" and "Firmware"
Move the two sections into a separate file called "best-practices.rst". Add the entry into index. Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/r/20240109064628.595453-6-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
6cc6a7b98b
commit
774ad6b53b
3 changed files with 49 additions and 44 deletions
48
docs/devel/migration/best-practices.rst
Normal file
48
docs/devel/migration/best-practices.rst
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
==============
|
||||||
|
Best practices
|
||||||
|
==============
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
=========
|
||||||
|
|
||||||
|
The migration stream can be analyzed thanks to ``scripts/analyze-migration.py``.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
$ qemu-system-x86_64 -display none -monitor stdio
|
||||||
|
(qemu) migrate "exec:cat > mig"
|
||||||
|
(qemu) q
|
||||||
|
$ ./scripts/analyze-migration.py -f mig
|
||||||
|
{
|
||||||
|
"ram (3)": {
|
||||||
|
"section sizes": {
|
||||||
|
"pc.ram": "0x0000000008000000",
|
||||||
|
...
|
||||||
|
|
||||||
|
See also ``analyze-migration.py -h`` help for more options.
|
||||||
|
|
||||||
|
Firmware
|
||||||
|
========
|
||||||
|
|
||||||
|
Migration migrates the copies of RAM and ROM, and thus when running
|
||||||
|
on the destination it includes the firmware from the source. Even after
|
||||||
|
resetting a VM, the old firmware is used. Only once QEMU has been restarted
|
||||||
|
is the new firmware in use.
|
||||||
|
|
||||||
|
- Changes in firmware size can cause changes in the required RAMBlock size
|
||||||
|
to hold the firmware and thus migration can fail. In practice it's best
|
||||||
|
to pad firmware images to convenient powers of 2 with plenty of space
|
||||||
|
for growth.
|
||||||
|
|
||||||
|
- Care should be taken with device emulation code so that newer
|
||||||
|
emulation code can work with older firmware to allow forward migration.
|
||||||
|
|
||||||
|
- Care should be taken with newer firmware so that backward migration
|
||||||
|
to older systems with older device emulation code will work.
|
||||||
|
|
||||||
|
In some cases it may be best to tie specific firmware versions to specific
|
||||||
|
versioned machine types to cut down on the combinations that will need
|
||||||
|
support. This is also useful when newer versions of firmware outgrow
|
||||||
|
the padding.
|
|
@ -11,3 +11,4 @@ QEMU live migration works.
|
||||||
compatibility
|
compatibility
|
||||||
vfio
|
vfio
|
||||||
virtio
|
virtio
|
||||||
|
best-practices
|
||||||
|
|
|
@ -52,27 +52,6 @@ All these migration protocols use the same infrastructure to
|
||||||
save/restore state devices. This infrastructure is shared with the
|
save/restore state devices. This infrastructure is shared with the
|
||||||
savevm/loadvm functionality.
|
savevm/loadvm functionality.
|
||||||
|
|
||||||
Debugging
|
|
||||||
=========
|
|
||||||
|
|
||||||
The migration stream can be analyzed thanks to ``scripts/analyze-migration.py``.
|
|
||||||
|
|
||||||
Example usage:
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
$ qemu-system-x86_64 -display none -monitor stdio
|
|
||||||
(qemu) migrate "exec:cat > mig"
|
|
||||||
(qemu) q
|
|
||||||
$ ./scripts/analyze-migration.py -f mig
|
|
||||||
{
|
|
||||||
"ram (3)": {
|
|
||||||
"section sizes": {
|
|
||||||
"pc.ram": "0x0000000008000000",
|
|
||||||
...
|
|
||||||
|
|
||||||
See also ``analyze-migration.py -h`` help for more options.
|
|
||||||
|
|
||||||
Common infrastructure
|
Common infrastructure
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
|
@ -970,26 +949,3 @@ the background migration channel. Anyone who cares about latencies of page
|
||||||
faults during a postcopy migration should enable this feature. By default,
|
faults during a postcopy migration should enable this feature. By default,
|
||||||
it's not enabled.
|
it's not enabled.
|
||||||
|
|
||||||
Firmware
|
|
||||||
========
|
|
||||||
|
|
||||||
Migration migrates the copies of RAM and ROM, and thus when running
|
|
||||||
on the destination it includes the firmware from the source. Even after
|
|
||||||
resetting a VM, the old firmware is used. Only once QEMU has been restarted
|
|
||||||
is the new firmware in use.
|
|
||||||
|
|
||||||
- Changes in firmware size can cause changes in the required RAMBlock size
|
|
||||||
to hold the firmware and thus migration can fail. In practice it's best
|
|
||||||
to pad firmware images to convenient powers of 2 with plenty of space
|
|
||||||
for growth.
|
|
||||||
|
|
||||||
- Care should be taken with device emulation code so that newer
|
|
||||||
emulation code can work with older firmware to allow forward migration.
|
|
||||||
|
|
||||||
- Care should be taken with newer firmware so that backward migration
|
|
||||||
to older systems with older device emulation code will work.
|
|
||||||
|
|
||||||
In some cases it may be best to tie specific firmware versions to specific
|
|
||||||
versioned machine types to cut down on the combinations that will need
|
|
||||||
support. This is also useful when newer versions of firmware outgrow
|
|
||||||
the padding.
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue