q35: document gigabyte_align
Document the logic behind the below/above 4G split. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									9a305c8fc7
								
							
						
					
					
						commit
						4e17997d49
					
				| 
						 | 
				
			
			@ -51,6 +51,10 @@
 | 
			
		|||
static bool has_pci_info;
 | 
			
		||||
static bool has_acpi_build = true;
 | 
			
		||||
static bool smbios_type1_defaults = true;
 | 
			
		||||
/* Make sure that guest addresses aligned at 1Gbyte boundaries get mapped to
 | 
			
		||||
 * host addresses aligned at 1Gbyte boundaries.  This way we can use 1GByte
 | 
			
		||||
 * pages in the host.
 | 
			
		||||
 */
 | 
			
		||||
static bool gigabyte_align = true;
 | 
			
		||||
 | 
			
		||||
/* PC hardware initialisation */
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +97,15 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
 | 
			
		|||
 | 
			
		||||
    kvmclock_create();
 | 
			
		||||
 | 
			
		||||
    /* Check whether RAM fits below 4G (leaving 1/2 GByte for IO memory
 | 
			
		||||
     * and 256 Mbytes for PCI Express Enhanced Configuration Access Mapping
 | 
			
		||||
     * also known as MMCFG).
 | 
			
		||||
     * If it doesn't, we need to split it in chunks below and above 4G.
 | 
			
		||||
     * In any case, try to make sure that guest addresses aligned at
 | 
			
		||||
     * 1G boundaries get mapped to host addresses aligned at 1G boundaries.
 | 
			
		||||
     * For old machine types, use whatever split we used historically to avoid
 | 
			
		||||
     * breaking migration.
 | 
			
		||||
     */
 | 
			
		||||
    if (args->ram_size >= 0xb0000000) {
 | 
			
		||||
        ram_addr_t lowmem = gigabyte_align ? 0x80000000 : 0xb0000000;
 | 
			
		||||
        above_4g_mem_size = args->ram_size - lowmem;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue