Messages in this thread Patch in this message | | | From | Fei Li <> | Subject | [PATCH v3] x86/acrn: Set X86_FEATURE_TSC_KNOWN_FREQ | Date | Tue, 29 Nov 2022 17:40:25 +0800 |
| |
Using hypervisor-provided TSC frequency is common practice for guests. However, for a Linux guest, it may still to reclibrate the ACRN-specific TSC frequency if X86_FEATURE_TSC_KNOWN_FREQ flag is not set.
When TSC frequency is known (retrieved from ACRN hypervisor), skip TSC refined calibration by setting X86_FEATURE_TSC_KNOWN_FREQ.
Also remove `inline` for acrn_get_tsc_khz() since it doesn't make sense.
Signed-off-by: Fei Li <fei1.li@intel.com> Reviewed-by: Yin, Fengwei <fengwei.yin@intel.com>
--- v3: Update the commit message base on Borislav's comments v2: Detail the commit message --- arch/x86/include/asm/acrn.h | 5 ----- arch/x86/kernel/cpu/acrn.c | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/x86/include/asm/acrn.h b/arch/x86/include/asm/acrn.h index 1dd14381bcb6..aa12c74ea959 100644 --- a/arch/x86/include/asm/acrn.h +++ b/arch/x86/include/asm/acrn.h @@ -30,11 +30,6 @@ static inline u32 acrn_cpuid_base(void) return 0; } -static inline unsigned long acrn_get_tsc_khz(void) -{ - return cpuid_eax(ACRN_CPUID_TIMING_INFO); -} - /* * Hypercalls for ACRN * diff --git a/arch/x86/kernel/cpu/acrn.c b/arch/x86/kernel/cpu/acrn.c index 485441b7f030..c5ff75b6a949 100644 --- a/arch/x86/kernel/cpu/acrn.c +++ b/arch/x86/kernel/cpu/acrn.c @@ -24,6 +24,12 @@ static u32 __init acrn_detect(void) return acrn_cpuid_base(); } +static unsigned long acrn_get_tsc_khz(void) +{ + setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ); + return cpuid_eax(ACRN_CPUID_TIMING_INFO); +} + static void __init acrn_init_platform(void) { /* Setup the IDT for ACRN hypervisor callback */ base-commit: b7b275e60bcd5f89771e865a8239325f86d9927d -- 2.34.1
| |