[SeaBIOS] [PATCH 0/4] support booting more than 255 CPUs with QEMU

Igor Mammedov imammedo at redhat.com
Wed May 11 12:02:40 CEST 2016


On Tue, 10 May 2016 16:43:30 +0200
Igor Mammedov <imammedo at 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.


> Changelog:
>   since RFC:
>     * move out max-cpus check out of mptable_setup()
>     * factor out CPU counting/apic ID detection in separate function
>     * return back accidentially deleted debug message with APIC ID
>     * drop unused code in smp_setup()
>     
> According to SDM, if CPUs have APIC ID more than 254
> firmware should pass control to OS in x2APIC mode.
> This series adds x2APIC bootstrap initialization.
> 
> QEMU side of x2APIC support:
> https://lists.gnu.org/archive/html/qemu-devel/2016-05/msg01094.html
> 
> 
> Igor Mammedov (3):
>   paravirt: disable legacy bios tables in case of more than 255 CPUs
>   support booting with more than 255 CPUs
>   cleanup smp_setup()
> 
> Kevin O'Connor (1):
>   smp: refactor present CPU APIC ID detection and counting
> 
>  src/fw/paravirt.c |  6 +++--
>  src/fw/smp.c      | 67 ++++++++++++++++++++++++++++++++++++++++---------------
>  src/x86.h         |  1 +
>  3 files changed, 54 insertions(+), 20 deletions(-)
> 




More information about the SeaBIOS mailing list