[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 01/19] piix: gigabyte alignment for ram
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 01/19] piix: gigabyte alignment for ram |
Date: |
Mon, 23 Dec 2013 18:11:33 +0200 |
From: Gerd Hoffmann <address@hidden>
Map 3G (i440fx) of memory below 4G, so the RAM pieces
are nicely aligned to gigabyte borders.
Keep old memory layout for (a) old machine types and (b) in case all
memory fits below 4G and thus we don't have to split RAM into pieces
in the first place. The later makes sure this change doesn't take
away memory from 32bit guests.
So, with i440fx and up to 3.5 GB of memory, all of it will be mapped
below 4G. With more than 3.5 GB of memory 3 GB will be mapped below
4G and the remaining amount will be mapped above 4G.
Signed-off-by: Gerd Hoffmann <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/i386/pc_piix.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 4e0dae7..acb9445 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -61,6 +61,7 @@ static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
static bool has_pci_info;
static bool has_acpi_build = true;
static bool smbios_type1_defaults = true;
+static bool gigabyte_align = true;
/* PC hardware initialisation */
static void pc_init1(QEMUMachineInitArgs *args,
@@ -107,8 +108,9 @@ static void pc_init1(QEMUMachineInitArgs *args,
}
if (args->ram_size >= 0xe0000000) {
- above_4g_mem_size = args->ram_size - 0xe0000000;
- below_4g_mem_size = 0xe0000000;
+ ram_addr_t lowmem = gigabyte_align ? 0xc0000000 : 0xe0000000;
+ above_4g_mem_size = args->ram_size - lowmem;
+ below_4g_mem_size = lowmem;
} else {
above_4g_mem_size = 0;
below_4g_mem_size = args->ram_size;
@@ -245,6 +247,7 @@ static void pc_init_pci(QEMUMachineInitArgs *args)
static void pc_compat_1_7(QEMUMachineInitArgs *args)
{
smbios_type1_defaults = false;
+ gigabyte_align = false;
}
static void pc_compat_1_6(QEMUMachineInitArgs *args)
--
MST
- [Qemu-devel] [PULL 00/19] acpi, pci, pc, fedora, virtio fixes and enhancements, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 01/19] piix: gigabyte alignment for ram,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 02/19] pc_piix: document gigabyte_align, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 03/19] hw/i386/pc_sysfw: support two flash drives, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 04/19] i440fx-test: qtest_start() should be paired with qtest_end(), Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 05/19] i440fx-test: give each GTest case its own qtest, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 06/19] i440fx-test: generate temporary firmware blob, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 07/19] i440fx-test: verify firmware under 4G and 1M, both -bios and -pflash, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 08/19] acpi: piix4: remove not needed GPE0 mask, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 09/19] acpi: factor out common pm_update_sci() into acpi core, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 10/19] acpi: ich9: allow guest to clear SCI rised by GPE, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 11/19] ACPI: Q35 DSDT: fix CPU hotplug GPE0.2 handler, Michael S. Tsirkin, 2013/12/23