54e7d3
From d5d95a6501682b870a8981f0ad129fa345bbda74 Mon Sep 17 00:00:00 2001
54e7d3
From: Andrea Arcangeli <aarcange@redhat.com>
54e7d3
Date: Tue, 8 Oct 2013 17:07:23 +0200
54e7d3
Subject: allow >1TB of RAM
54e7d3
54e7d3
RH-Author: Andrea Arcangeli <aarcange@redhat.com>
54e7d3
Message-id: <1381252043-13480-2-git-send-email-aarcange@redhat.com>
54e7d3
Patchwork-id: 54785
54e7d3
O-Subject: [RHEL-7.0 seabios PATCH] allow >1TB of RAM
54e7d3
Bugzilla: 1016974
54e7d3
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
54e7d3
RH-Acked-by: Gleb Natapov <gleb@redhat.com>
54e7d3
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
54e7d3
54e7d3
Receive bits 40-48 from qemu to setup e820 maps with more than 1TB of ram.
54e7d3
54e7d3
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
54e7d3
---
54e7d3
 src/cmos.h | 7 ++++---
54e7d3
 src/post.c | 7 ++++---
54e7d3
 2 files changed, 8 insertions(+), 6 deletions(-)
54e7d3
54e7d3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
54e7d3
(cherry picked from commit 4fee214c41b11b72b3427fda18e9eac1ee647746)
54e7d3
---
54e7d3
 src/fw/paravirt.c | 7 ++++---
54e7d3
 src/hw/rtc.h      | 7 ++++---
54e7d3
 2 files changed, 8 insertions(+), 6 deletions(-)
54e7d3
54e7d3
diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
54e7d3
index 0770c47..0804d57 100644
54e7d3
--- a/src/fw/paravirt.c
54e7d3
+++ b/src/fw/paravirt.c
54e7d3
@@ -492,9 +492,10 @@ qemu_cfg_e820(void)
54e7d3
     }
54e7d3
 
54e7d3
     // Check for memory over 4Gig in cmos
54e7d3
-    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_LOW) << 16)
54e7d3
-                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_MID) << 24)
54e7d3
-                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_HIGH) << 32));
54e7d3
+    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_16) << 16)
54e7d3
+                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_24) << 24)
54e7d3
+                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_32) << 32)
54e7d3
+                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_40) << 40));
54e7d3
     RamSizeOver4G = high;
54e7d3
     e820_add(0x100000000ull, high, E820_RAM);
54e7d3
     dprintf(1, "RamSizeOver4G: 0x%016llx [cmos]\n", RamSizeOver4G);
54e7d3
diff --git a/src/hw/rtc.h b/src/hw/rtc.h
54e7d3
index 252e73a..c4369f8 100644
54e7d3
--- a/src/hw/rtc.h
54e7d3
+++ b/src/hw/rtc.h
54e7d3
@@ -41,9 +41,10 @@
54e7d3
 #define CMOS_BIOS_BOOTFLAG1      0x38
54e7d3
 #define CMOS_BIOS_DISKTRANSFLAG  0x39
54e7d3
 #define CMOS_BIOS_BOOTFLAG2      0x3d
54e7d3
-#define CMOS_MEM_HIGHMEM_LOW     0x5b
54e7d3
-#define CMOS_MEM_HIGHMEM_MID     0x5c
54e7d3
-#define CMOS_MEM_HIGHMEM_HIGH    0x5d
54e7d3
+#define CMOS_MEM_HIGHMEM_16      0x5b
54e7d3
+#define CMOS_MEM_HIGHMEM_24      0x5c
54e7d3
+#define CMOS_MEM_HIGHMEM_32      0x5d
54e7d3
+#define CMOS_MEM_HIGHMEM_40      0x5e
54e7d3
 #define CMOS_BIOS_SMP_COUNT      0x5f
54e7d3
 
54e7d3
 // RTC register flags
54e7d3
-- 
54e7d3
1.8.3.1
54e7d3