[SeaBIOS] qemu cannot find boot disk with seabios when vcpus is 76

Kevin O'Connor kevin at koconnor.net
Tue Jul 28 16:25:48 CEST 2015


On Tue, Jul 28, 2015 at 09:25:42AM +0000, Han, Huaitong wrote:
> hi,all
> 
> When qemu vcpus value is 76~86, the qemu cannot find boot disk.
> 
> The problem happens on seabios: mptable_setup will use much ZoneFSeg
> memory with the increase of the vcpus,and init_atadrive zonefseg
> allocation fails,so the seabios cannot find disk. 87 vcpus works just
> because mptable_setup ZoneFSeg allocation fails, then init_atadrive gets
> the memory.
> 
> Because I am not familiar with bios, init_atadrive with ZoneLow or
> ZoneHigh instead of ZoneFSeg causes problems. and ZoneFSeg does not seem
> to be extended. init_atadrive also cannot be ahead of mptable_setup.
> 
> it maybe a way for qemu that using "CONFIG_MPTABLE"  to omit
> mptable_setup, because qemu with 87 and more vcpus works well. 
> 
> Any advices can be given to me for the bugfix ?

There are a few things that could be done:

- move mptable generation from seabios to qemu (as was done for smbios
  and acpi).  That way qemu can explicitly decide when to create the
  mptable and even tell seabios where to put it.

- change seabios to place the mptable in high memory if it is larger
  than some size.  See copy_mptable() and compare to how
  BUILD_MAX_SMBIOS_FSEG is checked in smbios_romfile_setup().

- more space could be reserved in the f-segment for bios tables (see
  layoutrom.py:BUILD_MIN_BIOSTABLE).

-Kevin



More information about the SeaBIOS mailing list