Skip to contentSkip to conversation

x86 boot enhancements, linuxbios support 10/11

PATCH New Eric W. Biederman 1 participant 1 message Apr 17, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 x86 boot enhancements, linuxbios support 10/11

Linus please apply,

Support for reading information from the linuxbios table. For now I just get the memory size more to come as things evolve.

Eric

arch/i386/Config.help +16 -0
diff -uNr linux-2.5.8.boot.proto/arch/i386/Config.help linux-2.5.8.boot.linuxbios/arch/i386/Config.help
@@ -803,6 +803,22 @@
   a work-around for a number of buggy BIOSes. Switch this option on if
   your computer crashes instead of powering off properly.
 
+LinuxBIOS support
+CONFIG_LINUXBIOS
+  LinuxBIOS is an alternative GPL'd firmware initially for x86
+  compatible machines.  LinuxBIOS attempts to be a simple and as fast
+  as possible, and is initially optimized for linux.  The interface to
+  the OS is a table at the beginning of memory.  Which should make the
+  inevitable firmware bugs easier to work around, as should the source
+  code :)  A goal of this table is to provide enough information so
+  that any OS but especially linux does not need to have motherboard
+  specific knowledge.
+
+  This first release only provides LinuxBIOS detection (by detecting
+  it's table) and memory size detection. 
+
+  For more information on LinuxBIOS see http://www.linuxbios.org
+
 CONFIG_CMDLINE
   Generally it is best to pass command line parameters via the
   bootloader but there are times it is convinient not to do this.
arch/i386/config.in +1 -0
diff -uNr linux-2.5.8.boot.proto/arch/i386/config.in linux-2.5.8.boot.linuxbios/arch/i386/config.in
@@ -208,6 +208,7 @@
    fi
 fi
 
+bool 'LinuxBIOS support' CONFIG_LINUXBIOS
 endmenu
 
 mainmenu_option next_comment
arch/i386/defconfig +1 -0
diff -uNr linux-2.5.8.boot.proto/arch/i386/defconfig linux-2.5.8.boot.linuxbios/arch/i386/defconfig
@@ -119,6 +119,7 @@
 CONFIG_BINFMT_MISC=y
 CONFIG_PM=y
 # CONFIG_APM is not set
+# CONFIG_LINUXBIOS is not set
 
 #
 # Memory Technology Devices (MTD)
arch/i386/kernel/Makefile +1 -0
diff -uNr linux-2.5.8.boot.proto/arch/i386/kernel/Makefile linux-2.5.8.boot.linuxbios/arch/i386/kernel/Makefile
@@ -42,6 +42,7 @@
 obj-$(CONFIG_SMP)		+= smp.o smpboot.o trampoline.o
 obj-$(CONFIG_X86_LOCAL_APIC)	+= mpparse.o apic.o nmi.o
 obj-$(CONFIG_X86_IO_APIC)	+= io_apic.o
+obj-$(CONFIG_LINUXBIOS)		+= linuxbios.o
 ifdef CONFIG_VISWS
 obj-y += setup-visws.o
 obj-$(CONFIG_X86_VISWS_APIC)	+= visws_apic.o
arch/i386/kernel/linuxbios.c +103 -0

103 lines not on this page · raw message

arch/i386/kernel/linuxbios_tables.h +82 -0

82 lines not on this page · raw message

arch/i386/kernel/setup.c +6 -2
diff -uNr linux-2.5.8.boot.proto/arch/i386/kernel/setup.c linux-2.5.8.boot.linuxbios/arch/i386/kernel/setup.c
@@ -119,6 +119,7 @@
 #include <asm/mmu_context.h>
 #include <asm/boot.h>
 #include <asm/boot_param.h>
+#include <asm/linuxbios.h>
 
 /*
  * Machine setup..
@@ -265,7 +266,7 @@
 	}
 }
 
-static void __init add_memory_region(unsigned long long start,
+void __init add_memory_region(unsigned long long start,
                                   unsigned long long size, int type)
 {
 	int x = e820.nr_map;
@@ -283,7 +284,7 @@
 
 #define E820_DEBUG	1
 
-static void __init print_memory_map(char *who)
+void __init print_memory_map(char *who)
 {
 	int i;
 
@@ -775,6 +776,9 @@
 	if (entry16) {
 		read_entry16_params(params);
 	}
+
+	/* Attempt to get the LinuxBIOS parameters */
+	read_linuxbios_params();
 
 	/* Read user specified params */
 	parse_mem_cmdline(cmdline_p);
include/asm-i386/e820.h +3 -0
diff -uNr linux-2.5.8.boot.proto/include/asm-i386/e820.h linux-2.5.8.boot.linuxbios/include/asm-i386/e820.h
@@ -36,6 +36,9 @@
 };
 
 extern struct e820map e820;
+extern void  add_memory_region(unsigned long long start,
+	unsigned long long size, int type);
+extern void print_memory_map(char *who);
 #endif/*!__ASSEMBLY__*/
 
 #endif/*__E820_HEADER*/
include/asm-i386/linuxbios.h +10 -0
diff -uNr linux-2.5.8.boot.proto/include/asm-i386/linuxbios.h linux-2.5.8.boot.linuxbios/include/asm-i386/linuxbios.h
@@ -0,0 +1,10 @@
+#ifndef __ASMi386_LINUXBIOS_H
+#define __ASMi386_LINUXBIOS_H
+
+#ifdef CONFIG_LINUXBIOS
+void read_linuxbios_params(void);
+#else
+#define read_linuxbios_params()
+#endif /* CONFIG_LINUXBIOS */
+
+#endif