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.
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(-)