Patchwork seabios: correct setting of datalow_base for large rom images

login
register
mail settings
Submitter Jason Baron
Date June 5, 2012, 4:09 p.m.
Message ID <201206051609.q55G9ImZ019474@int-mx09.intmail.prod.int.phx2.redhat.com>
Download mbox | patch
Permalink /patch/163103/
State New
Headers show

Comments

Jason Baron - June 5, 2012, 4:09 p.m.
I've been creating 256kb rom images with larger acpi tables for second level
buses. After a recent re-base, my rom images no longer built. Bisected to:

commit 46b82624c95b951e8825fab117d9352faeae0ec8
Author: Kevin O'Connor <kevin@koconnor.net>
Date:   Sun May 13 12:10:30 2012 -0400

    Add mechanism to declare variables as "low mem" and use for extra stack.


Where sec32low_top is greater than datalow_base. Currently, datalow_base is
calculated by subtracting a 64kb offset. Updating it to 128kb, resolved this
issue for me, while still continuing to create smaller rom images as expected.

Signed-off-by: Jason Baron <jbaron@redhat.com>
---
 tools/layoutrom.py |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Patch

diff --git a/tools/layoutrom.py b/tools/layoutrom.py
index 74b410f..01f9bed 100755
--- a/tools/layoutrom.py
+++ b/tools/layoutrom.py
@@ -219,10 +219,10 @@  def doLayout(sections, genreloc):
     li.sections32low = getSectionsCategory(sections, '32low')
     if genreloc:
         sec32low_top = li.sec32init_start
-        datalow_base = min(BUILD_BIOS_ADDR, li.sec32flat_start) - 64*1024
+        datalow_base = min(BUILD_BIOS_ADDR, li.sec32flat_start) - 128*1024
     else:
         sec32low_top = min(BUILD_BIOS_ADDR, li.sec32init_start)
-        datalow_base = sec32low_top - 64*1024
+        datalow_base = sec32low_top - 128*1024
     li.datalow_base = max(BUILD_ROM_START, alignpos(datalow_base, 2*1024))
     li.sec32low_start, li.sec32low_align = setSectionsStart(
         li.sections32low, sec32low_top, 16, segoffset=li.datalow_base)