Am 23.07.2012 15:22, schrieb Igor Mammedov:
MP initialization protocol differs between cpu families, and for P6 and
onward models it is up to CPU to decide if it will be BSP using this
protocol, so try to model this. However there is no point in implementing
MP initialization protocol in qemu. Thus first CPU is always marked as BSP.
This patch:
- moves decision to designate BSP from board into cpu, making cpu
self-sufficient in this regard. Later it will allow to cleanup hw/pc.c
and remove cpu_reset and wrappers from there.
- stores flag that CPU is BSP in IA32_APIC_BASE to model behavior
described in Inted SDM vol 3a part 1 chapter 8.4.1
- uses MSR_IA32_APICBASE_BSP flag in apic_base for checking if cpu is BSP
patch is based on Jan Kiszka's proposal:
http://thread.gmane.org/gmane.comp.emulators.qemu/100806
Signed-off-by: Igor Mammedov <address@hidden>
---
Changelog:
v2:
- fix build for i386-linux-user
spotted-by: Peter Maydell <address@hidden>
v3:
- style change requested by Andreas Färber <address@hidden>
v4:
- reuse cpu_is_bsp() rather than open code check if apicbase has BSP bit set
requested by Gleb Natapov <address@hidden>
- hijacked patch [1] to use X86CPU instead of CPUX86State in cpu_is_bsp()
v5:
- move Changelog under ---
requested by: Peter Maydell <address@hidden>
1) [PATCH qom-next 06/59] pc: Pass X86CPU to cpu_is_bsp()
SoB: Andreas Färber <address@hidden>
http://lists.gnu.org/archive/html/qemu-devel/2012-05/msg03185.html
Reviewed-by: Andreas Färber <address@hidden>
I'm fine with this patch, including the squashing of my trivial patch
without SoB, but would appreciate someone who knows the APIC (Jan?) to
add an explicit Acked-by.