mirror of https://github.com/xemu-project/xemu.git
pc: apic_common: Reset APIC ID to initial ID when switching into x2APIC mode
SDM: x2APIC State Transitions: State Changes From xAPIC Mode to x2APIC Mode " Any APIC ID value written to the memory-mapped local APIC ID register is not preserved " Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Radim Krčmář <rkrcmar@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
4c34897aed
commit
facb07cd2a
|
@ -40,6 +40,11 @@ void cpu_set_apic_base(DeviceState *dev, uint64_t val)
|
|||
if (dev) {
|
||||
APICCommonState *s = APIC_COMMON(dev);
|
||||
APICCommonClass *info = APIC_COMMON_GET_CLASS(s);
|
||||
/* switching to x2APIC, reset possibly modified xAPIC ID */
|
||||
if (!(s->apicbase & MSR_IA32_APICBASE_EXTD) &&
|
||||
(val & MSR_IA32_APICBASE_EXTD)) {
|
||||
s->id = s->initial_apic_id;
|
||||
}
|
||||
info->set_base(s, val);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue