On Wed, May 11, 2016 at 12:02:40PM +0200, Igor Mammedov wrote:
On Tue, 10 May 2016 16:43:30 +0200 Igor Mammedov imammedo@redhat.com wrote:
Probably question to Kevin, I've tried to make AP bootstrap run in parallel to speed up smp_setup with many CPUs. However it hangs and I couldn't debug it. Debugging works fine in 16bit mode as described in wiki but from the point when entry_smp() switches to 32bit mode I don't know how to/where/where from load symbols for 32-bit code, even 'disassemble $ip,+xxx' in gdb doesn't work as expected. Perhaps the debugging section in wiki needs to be updated to show how to debug seabios when it's in 32 mode.
Did you disable CONFIG_RELOCATE_INIT as described in the wiki? (The smp.c code is considered part of the "init" portion of SeaBIOS.) Otherwise, the addresses should just work in 32bit mode.
As for threading the smp init - the code currently takes an atomic lock to control access to a shared stack. That would need to change in order to support simultaneous smp init. Also note that the core code, such as dprintf, doesn't support true smp multi-threading.
-Kevin