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_pci_info;
|
||||||
static bool has_acpi_build = true;
|
static bool has_acpi_build = true;
|
||||||
static bool smbios_type1_defaults = 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;
|
static bool gigabyte_align = true;
|
||||||
|
|
||||||
/* PC hardware initialisation */
|
/* PC hardware initialisation */
|
||||||
@ -93,6 +97,15 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
|
|||||||
|
|
||||||
kvmclock_create();
|
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) {
|
if (args->ram_size >= 0xb0000000) {
|
||||||
ram_addr_t lowmem = gigabyte_align ? 0x80000000 : 0xb0000000;
|
ram_addr_t lowmem = gigabyte_align ? 0x80000000 : 0xb0000000;
|
||||||
above_4g_mem_size = args->ram_size - lowmem;
|
above_4g_mem_size = args->ram_size - lowmem;
|
||||||
|
Loading…
Reference in New Issue
Block a user