|
|
9ae3a8 |
From 8d2dfb2e031ded182868c14423b874464cd98949 Mon Sep 17 00:00:00 2001
|
|
|
9ae3a8 |
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
9ae3a8 |
Date: Mon, 27 Jan 2014 10:31:27 +0100
|
|
|
9ae3a8 |
Subject: [PATCH 01/14] piix: gigabyte alignment for ram
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Message-id: <1389867959-12463-2-git-send-email-kraxel@redhat.com>
|
|
|
9ae3a8 |
Patchwork-id: 56744
|
|
|
9ae3a8 |
O-Subject: [RHEL-7 qemu-kvm PATCH 1/4] piix: gigabyte alignment for ram
|
|
|
9ae3a8 |
Bugzilla: 1026548
|
|
|
9ae3a8 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Map 3G (i440fx) of memory below 4G, so the RAM pieces
|
|
|
9ae3a8 |
are nicely aligned to gigabyte borders.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Keep old memory layout for (a) old machine types and (b) in case all
|
|
|
9ae3a8 |
memory fits below 4G and thus we don't have to split RAM into pieces
|
|
|
9ae3a8 |
in the first place. The later makes sure this change doesn't take
|
|
|
9ae3a8 |
away memory from 32bit guests.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
So, with i440fx and up to 3.5 GB of memory, all of it will be mapped
|
|
|
9ae3a8 |
below 4G. With more than 3.5 GB of memory 3 GB will be mapped below
|
|
|
9ae3a8 |
4G and the remaining amount will be mapped above 4G.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
9ae3a8 |
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
|
|
9ae3a8 |
(cherry picked from commit bb43d3839c29b17a2f5c122114cd4ca978065a18)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Conflicts:
|
|
|
9ae3a8 |
hw/i386/pc_piix.c
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
hw/i386/pc_piix.c | 9 ++++++---
|
|
|
9ae3a8 |
1 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
|
|
|
9ae3a8 |
index 663c9d5..9f1d0b5 100644
|
|
|
9ae3a8 |
--- a/hw/i386/pc_piix.c
|
|
|
9ae3a8 |
+++ b/hw/i386/pc_piix.c
|
|
|
9ae3a8 |
@@ -61,6 +61,7 @@ static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
|
|
|
9ae3a8 |
static bool smbios_type1_defaults = true;
|
|
|
9ae3a8 |
static bool has_pci_info;
|
|
|
9ae3a8 |
static bool has_acpi_build = true;
|
|
|
9ae3a8 |
+static bool gigabyte_align = true;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* PC hardware initialisation */
|
|
|
9ae3a8 |
static void pc_init1(QEMUMachineInitArgs *args,
|
|
|
9ae3a8 |
@@ -101,9 +102,10 @@ static void pc_init1(QEMUMachineInitArgs *args,
|
|
|
9ae3a8 |
kvmclock_create();
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- if (args->ram_size >= QEMU_BELOW_4G_RAM_END ) {
|
|
|
9ae3a8 |
- above_4g_mem_size = args->ram_size - QEMU_BELOW_4G_RAM_END;
|
|
|
9ae3a8 |
- below_4g_mem_size = QEMU_BELOW_4G_RAM_END;
|
|
|
9ae3a8 |
+ if (args->ram_size >= 0xe0000000) {
|
|
|
9ae3a8 |
+ ram_addr_t lowmem = gigabyte_align ? 0xc0000000 : 0xe0000000;
|
|
|
9ae3a8 |
+ above_4g_mem_size = args->ram_size - lowmem;
|
|
|
9ae3a8 |
+ below_4g_mem_size = lowmem;
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
above_4g_mem_size = 0;
|
|
|
9ae3a8 |
below_4g_mem_size = args->ram_size;
|
|
|
9ae3a8 |
@@ -929,6 +931,7 @@ static void pc_compat_rhel650(QEMUMachineInitArgs *args)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
rom_file_in_ram = false;
|
|
|
9ae3a8 |
has_acpi_build = false;
|
|
|
9ae3a8 |
+ gigabyte_align = false;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void pc_init_rhel650(QEMUMachineInitArgs *args)
|
|
|
9ae3a8 |
--
|
|
|
9ae3a8 |
1.7.1
|
|
|
9ae3a8 |
|