From a3fdc7a4964e6b15e436a925d6e76a17f9f12765 Mon Sep 17 00:00:00 2001 From: Sainath Grandhi Date: Mon, 10 Jun 2019 16:51:44 -0700 Subject: [PATCH] hv: Add is_xapic_enabled API to check vLAPIC moe is_xapic_enabled API returns true if vLAPIC is in xAPIC mode. In all other cases, it returns false. Tracked-On: #3253 Signed-off-by: Sainath Grandhi Acked-by: Eddie Dong --- hypervisor/arch/x86/guest/vlapic.c | 10 ++++++++++ hypervisor/include/arch/x86/guest/vlapic.h | 1 + 2 files changed, 11 insertions(+) diff --git a/hypervisor/arch/x86/guest/vlapic.c b/hypervisor/arch/x86/guest/vlapic.c index a37e0fc20..c448f982c 100644 --- a/hypervisor/arch/x86/guest/vlapic.c +++ b/hypervisor/arch/x86/guest/vlapic.c @@ -1998,6 +1998,16 @@ bool is_x2apic_enabled(const struct acrn_vlapic *vlapic) return ret; } +bool is_xapic_enabled(const struct acrn_vlapic *vlapic) +{ + bool ret = false; + if ((vlapic_get_apicbase(vlapic) & APICBASE_LAPIC_MODE) == APICBASE_XAPIC) { + ret = true; + } + + return ret; +} + static inline uint32_t x2apic_msr_to_regoff(uint32_t msr) { diff --git a/hypervisor/include/arch/x86/guest/vlapic.h b/hypervisor/include/arch/x86/guest/vlapic.h index b49e8c02e..af235ba6a 100644 --- a/hypervisor/include/arch/x86/guest/vlapic.h +++ b/hypervisor/include/arch/x86/guest/vlapic.h @@ -212,6 +212,7 @@ void vlapic_calc_dest_lapic_pt(struct acrn_vm *vm, uint64_t *dmask, bool is_broa uint32_t dest, bool phys); bool is_lapic_pt_enabled(struct acrn_vm *vm); bool is_x2apic_enabled(const struct acrn_vlapic *vlapic); +bool is_xapic_enabled(const struct acrn_vlapic *vlapic); /** * @} */