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;