Blob Blame History Raw
From 3c0e8f345d3653dd0a93212961b2417cb5623403 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 27 Jan 2014 15:31:26 -0500
Subject: [PATCH 4/6] pci: align 64bit pci regions to 1G

Message-id: <1390836688-16749-2-git-send-email-kraxel@redhat.com>
Patchwork-id: 56957
O-Subject: [RHEL-7 seabios PATCH 1/3] pci: align 64bit pci regions to 1G
Bugzilla: 1055832
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>

So they are hugepage aligned.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit f21c0066df641c2d0e383254bb69a42a60c0616c)
---
 src/pciinit.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 src/pciinit.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/pciinit.c b/src/pciinit.c
index e501964..15744e7 100644
--- a/src/pciinit.c
+++ b/src/pciinit.c
@@ -761,10 +761,15 @@ static void pci_bios_map_devices(struct pci_bus *busses)
         u64 align_mem = pci_region_align(&r64_mem);
         u64 align_pref = pci_region_align(&r64_pref);
 
-        r64_mem.base = ALIGN(0x100000000LL + RamSizeOver4G, align_mem);
-        r64_pref.base = ALIGN(r64_mem.base + sum_mem, align_pref);
+        r64_mem.base = 0x100000000LL + RamSizeOver4G;
+        r64_mem.base = ALIGN(r64_mem.base, align_mem);
+        r64_mem.base = ALIGN(r64_mem.base, (1LL<<30));    // 1G hugepage
+        r64_pref.base = r64_mem.base + sum_mem;
+        r64_pref.base = ALIGN(r64_pref.base, align_pref);
+        r64_pref.base = ALIGN(r64_pref.base, (1LL<<30));  // 1G hugepage
         pcimem64_start = r64_mem.base;
         pcimem64_end = r64_pref.base + sum_pref;
+        pcimem64_end = ALIGN(pcimem64_end, (1LL<<30));    // 1G hugepage
 
         pci_region_map_entries(busses, &r64_mem);
         pci_region_map_entries(busses, &r64_pref);
-- 
1.8.3.1