On Sun, Feb 22, 2009 at 10:14:56PM -0800, Yinghai Lu wrote: > please check > > [PATCH] x86: check physptr with max_low_pfn on 32bit
Thanks for looking at this issue. Unfortunately, the kernel still does not work with the applied patch. Neither 32bit nor 64bit kernels boot. (Note, I applied the patch to Linus' git, and I had to replace mpf->physptr with mpf->mpf_physptr.) The error messages from before and after patching appear to be the same. In order to aid in testing, I modified SeaBIOS to force the mptable into high memory even in qemu mode. A modified bios.bin file can be found at: http://linuxtogo.org/~kevin/SeaBIOS/bios.bin-high-mptable To use it with qemu, the steps are roughly: mkdir testbios cp /usr/share/qemu/*.bin testbios/ cp bios.bin-high-mptable testbios/bios.bin qemu -L testbios/ -hda mytestlinux.img -serial file:mylog The modified bios.bin can also be built manually by running: git clone git://linuxtogo.org/home/kevin/seabios.git cd seabios patch -p1 < patch-from-below make cp out/bios.bin ../bios.bin-high-mptable -Kevin diff --git a/src/config.h b/src/config.h index 56e5302..1ecc86f 100644 --- a/src/config.h +++ b/src/config.h @@ -21,7 +21,7 @@ #define CONFIG_DEBUG_LEVEL 1 // Send debugging information to serial port -#define CONFIG_DEBUG_SERIAL 0 +#define CONFIG_DEBUG_SERIAL 1 // Support for int13 floppy drive access #define CONFIG_FLOPPY_SUPPORT 1 @@ -77,7 +77,7 @@ // Support finding a UUID (for smbios) via "magic" outl sequence. #define CONFIG_UUID_BACKDOOR 1 // Support generation of ACPI tables (for emulators) -#define CONFIG_ACPI 1 +#define CONFIG_ACPI 0 // Support bios callbacks specific to via vgabios. #define CONFIG_VGAHOOKS 0 // Support S3 resume handler. diff --git a/src/mptable.c b/src/mptable.c index 9e030fe..79cc7ba 100644 --- a/src/mptable.c +++ b/src/mptable.c @@ -19,7 +19,7 @@ mptable_init(void) dprintf(3, "init MPTable\n"); int smp_cpus = smp_probe(); - if (smp_cpus <= 1) + if (0 && smp_cpus <= 1) // Building an mptable on uniprocessor machines confuses some OSes. return; @@ -39,7 +39,9 @@ mptable_init(void) /* floating pointer structure */ struct mptable_floating_s *floating = (void*)start; memset(floating, 0, sizeof(*floating)); - struct mptable_config_s *config = (void*)&floating[1]; +// struct mptable_config_s *config = (void*)&floating[1]; + struct mptable_config_s *config = (void*)(RamSize - 64*1024); + add_e820((u32)config, 64*1024, E820_RESERVED); floating->signature = MPTABLE_SIGNATURE; floating->physaddr = (u32)config; floating->length = 1; -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

