mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
pc: kvm_apic: Pass APIC ID depending on xAPIC/x2APIC mode
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
facb07cd2a
commit
e391c00970
3 changed files with 21 additions and 5 deletions
|
@ -129,9 +129,8 @@ static bool kvm_x2apic_api_set_flags(uint64_t flags)
|
|||
return !kvm_vm_enable_cap(s, KVM_CAP_X2APIC_API, 0, flags);
|
||||
}
|
||||
|
||||
#define MEMORIZE(fn) \
|
||||
#define MEMORIZE(fn, _result) \
|
||||
({ \
|
||||
static typeof(fn) _result; \
|
||||
static bool _memorized; \
|
||||
\
|
||||
if (_memorized) { \
|
||||
|
@ -141,11 +140,19 @@ static bool kvm_x2apic_api_set_flags(uint64_t flags)
|
|||
_result = fn; \
|
||||
})
|
||||
|
||||
static bool has_x2apic_api;
|
||||
|
||||
bool kvm_has_x2apic_api(void)
|
||||
{
|
||||
return has_x2apic_api;
|
||||
}
|
||||
|
||||
bool kvm_enable_x2apic(void)
|
||||
{
|
||||
return MEMORIZE(
|
||||
kvm_x2apic_api_set_flags(KVM_X2APIC_API_USE_32BIT_IDS |
|
||||
KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK));
|
||||
KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK),
|
||||
has_x2apic_api);
|
||||
}
|
||||
|
||||
static int kvm_get_tsc(CPUState *cs)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue