@samitouri / QOSamiQemu / commits / 3a66dae931

whpx: i386: some x2APIC awareness

Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr> Link: https://lore.kernel.org/r/20260422214225.2242-24-mohamed@unpredictable.fr Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Mohamed Mediouni committed Apr 22, 2026 at 23:42 UTC 3a66dae931c92d42891a9ef59a118acb5621d99a
1 file changed +10 -2
target/i386/whpx/whpx-apic.c
+10 -2
@@ -33,7 +33,11 @@ static void whpx_put_apic_state(APICCommonState *s,
33 int i;
34
35 memset(kapic, 0, sizeof(*kapic));
36 - kapic->fields[0x2].data = s->id << 24;
36 + if (s->apicbase & MSR_IA32_APICBASE_EXTD) {
37 + kapic->fields[0x2].data = s->initial_apic_id;
38 + } else {
39 + kapic->fields[0x2].data = s->id << 24;
40 + }
41 kapic->fields[0x3].data = s->version | ((APIC_LVT_NB - 1) << 16);
42 kapic->fields[0x8].data = s->tpr;
43 kapic->fields[0xd].data = s->log_dest << 24;
@@ -61,7 +65,11 @@ static void whpx_get_apic_state(APICCommonState *s,
65 {
66 int i, v;
67
64 - s->id = kapic->fields[0x2].data >> 24;
68 + if (s->apicbase & MSR_IA32_APICBASE_EXTD) {
69 + assert(kapic->fields[0x2].data == s->initial_apic_id);
70 + } else {
71 + s->id = kapic->fields[0x2].data >> 24;
72 + }
73 s->tpr = kapic->fields[0x8].data;
74 s->arb_id = kapic->fields[0x9].data;
75 s->log_dest = kapic->fields[0xd].data >> 24;