[LinuxBIOS] RESEND: patch: fix the problem with CONFIG_CONSOLE_VGA not pulling in the emulator
Torsten Duwe
duwe at lst.de
Sat Jan 5 17:51:02 CET 2008
Walking through the code to distinguish between VGA_ROM_RUN and CONSOLE_VGA,
I've seen assumptions about the memory layout and PCI_ROM_RUN, which I
considered errors; CONSOLE_VGA || PCI_ROM_RUN was probably cut and pasted? I
removed the PCI_ROM_RUN, please check.
Signed-off-by: Torsten Duwe <duwe at lst.de>
diff -BNurbp LinuxBIOSv2.orig/src/config/linuxbios_ram.ld
LinuxBIOSv2/src/config/linuxbios_ram.ld
--- LinuxBIOSv2.orig/src/config/linuxbios_ram.ld 2007-07-25 18:26:10.000000000
+0200
+++ LinuxBIOSv2/src/config/linuxbios_ram.ld 2008-01-05 17:14:27.000000000
+0100
@@ -92,8 +92,8 @@ SECTIONS
_stack = .;
.stack . : {
/* Reserve a stack for each possible cpu */
- /* the stack for ap will be put after pgtbl in 1M to CONFIG_LB_MEM_TOPK
range when VGA and ROM_RUN and CONFIG_LB_MEM_TOPK>1024*/
- . = ((CONFIG_CONSOLE_VGA ||
CONFIG_PCI_ROM_RUN)&&(_RAMBASE<0x100000)&&(CONFIG_LB_MEM_TOPK>(0x100000>>10)) ) ?
STACK_SIZE : (CONFIG_MAX_CPUS*STACK_SIZE);
+ /* the stack for ap will be put after pgtbl in 1M to CONFIG_LB_MEM_TOPK
range when VGA mem is used and CONFIG_LB_MEM_TOPK>1024*/
+ . = (CONFIG_CONSOLE_VGA
&&(_RAMBASE<0x100000)&&(CONFIG_LB_MEM_TOPK>(0x100000>>10)) ) ? STACK_SIZE :
(CONFIG_MAX_CPUS*STACK_SIZE);
}
_estack = .;
_heap = .;
@@ -111,7 +111,7 @@ SECTIONS
_bogus = ASSERT( ( (_eram_seg>>10) < (CONFIG_LB_MEM_TOPK)) , "please
increase CONFIG_LB_MEM_TOPK");
- _bogus = ASSERT( !((CONFIG_CONSOLE_VGA || CONFIG_PCI_ROM_RUN) &&
((_ram_seg<0xa0000) && (_eram_seg>0xa0000))) , "please increase
CONFIG_LB_MEM_TOPK and if still fail, try to set _RAMBASE more than 1M");
+ _bogus = ASSERT( !(CONFIG_CONSOLE_VGA && ((_ram_seg<0xa0000) &&
(_eram_seg>0xa0000))) , "please increase CONFIG_LB_MEM_TOPK and if still
fail, try to set _RAMBASE more than 1M");
/DISCARD/ : {
*(.comment)
diff -BNurbp LinuxBIOSv2.orig/src/cpu/x86/lapic/lapic_cpu_init.c
LinuxBIOSv2/src/cpu/x86/lapic/lapic_cpu_init.c
--- LinuxBIOSv2.orig/src/cpu/x86/lapic/lapic_cpu_init.c 2007-07-25
18:25:59.000000000 +0200
+++ LinuxBIOSv2/src/cpu/x86/lapic/lapic_cpu_init.c 2008-01-05
17:11:43.000000000 +0100
@@ -226,7 +226,7 @@ int start_cpu(device_t cpu)
index = ++last_cpu_index;
/* Find end of the new processors stack */
-#if (CONFIG_LB_MEM_TOPK>1024) && (_RAMBASE < 0x100000) &&
((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
+#if (CONFIG_LB_MEM_TOPK>1024) && (_RAMBASE < 0x100000) &&
(CONFIG_CONSOLE_VGA==1)
if(index<1) { // only keep bsp on low
stack_end = ((unsigned long)_estack) - (STACK_SIZE*index) - sizeof(struct
cpu_info);
} else {
diff -BNurbp LinuxBIOSv2.orig/src/cpu/x86/pae/pgtbl.c
LinuxBIOSv2/src/cpu/x86/pae/pgtbl.c
--- LinuxBIOSv2.orig/src/cpu/x86/pae/pgtbl.c 2007-07-25 18:25:59.000000000
+0200
+++ LinuxBIOSv2/src/cpu/x86/pae/pgtbl.c 2008-01-05 17:11:20.000000000 +0100
@@ -54,7 +54,7 @@ void *map_2M_page(unsigned long page)
struct pde pdp[512];
} __attribute__ ((packed));
-#if (CONFIG_LB_MEM_TOPK>1024) && (_RAMBASE<0x100000) &&
((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
+#if (CONFIG_LB_MEM_TOPK>1024) && (_RAMBASE<0x100000) &&
(CONFIG_CONSOLE_VGA==1)
/*
pgtbl is too big, so use last one 1M before CONFIG_LB_MEM_TOP, otherwise
for 8 way dual core with vga support will push stack and heap cross 0xa0000,
and that region need to be used as vga font buffer. Please make sure set
CONFIG_LB_MEM_TOPK=2048 in MB Config
diff -BNurbp LinuxBIOSv2.orig/src/stream/rom_stream.c
LinuxBIOSv2/src/stream/rom_stream.c
--- LinuxBIOSv2.orig/src/stream/rom_stream.c 2007-07-25 18:26:00.000000000
+0200
+++ LinuxBIOSv2/src/stream/rom_stream.c 2008-01-05 17:06:01.000000000 +0100
@@ -79,7 +79,7 @@ int stream_init(void)
#if _RAMBASE<0x00100000
olen = *(unsigned int *)dest;
-#if (CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1)
+#if CONFIG_CONSOLE_VGA==1
if((dest < 0xa0000) && ((dest+olen)>0xa0000)) {
dest = (CONFIG_LB_MEM_TOPK<<10);
}
More information about the coreboot
mailing list