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