On Tue, Feb 14, 2012 at 08:44:59PM +0100, Bernd Blaauw wrote:
I'm stuck with a few questions about applying SeaBIOS to Bochs (Windows), hoping someone is willing to give out some helpful hints.
- Can the downloadable v1.6.3 binary directly be used in Bochs, or
is a recompile needed? Thought I read some docs about MTRR config options.
I think you may need to change some config options. Try enabling CONFIG_OPTIONROMS_DEPLOYED and disabling CONFIG_MTRR_INIT. I think the latest version of Bochs may no longer need one or both of these, but I'm not sure. Sebastian may know.
- What minimal system requirements does SeaBIOS put on a virtual
machine? 80586, 2MB, PCI ? 80386, 1MB, ISA ?
SeaBIOS should work okay with 1MB. This seems to fail in recent QEMU versions, but I think that is specific to QEMU.
Retesting seabios with qemu-0.13 - it looks like some regressions made it into seabios - see attached patch for a fix. (With patch below, it works okay for me with qemu-0.13 with "-m 1" option.)
The latest SeaBIOS tip will work on 80386 - the 1.6.3 version requires a 80586. I think PCI may be required (to unlock ram).
- Is there an opensource BIOS, usable in Bochs and QEMU, that does
work with only 1MB RAM assigned to the VM? SeaBIOS fails this.
SeaBIOS should work. If there are SeaBIOS issues, they should be fixed.
-Kevin
diff --git a/src/acpi.c b/src/acpi.c index 107469f..7bc662d 100644 --- a/src/acpi.c +++ b/src/acpi.c @@ -496,6 +496,10 @@ static void* build_pcihp(void) int i;
u8 *ssdt = malloc_high(sizeof ssdp_pcihp_aml); + if (!ssdt) { + warn_noalloc(); + return NULL; + } memcpy(ssdt, ssdp_pcihp_aml, sizeof ssdp_pcihp_aml);
/* Runtime patching of EJ0: to disable hotplug for a slot, diff --git a/src/pmm.c b/src/pmm.c index 82a0b1d..c649fd8 100644 --- a/src/pmm.c +++ b/src/pmm.c @@ -214,7 +214,8 @@ malloc_fixupreloc(void) int i; for (i=0; i<ARRAY_SIZE(Zones); i++) { struct zone_s *zone = Zones[i]; - zone->info->pprev = &zone->info; + if (zone->info) + zone->info->pprev = &zone->info; }
// Add space free'd during relocation in f-segment to ZoneFSeg