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>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
==============
 | 
						|
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.
 |