mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-23 09:47:44 +00:00
hv: add "invariant TSC" cap detection
ACRN HV is designed/implemented with "invariant TSC" capability, which wasn't checked at boot time. This commit adds the "invairant TSC" detection, ACRN fails to boot if there wasn't "invariant TSC" capability. Tracked-On: #3636 Signed-off-by: Yan, Like <like.yan@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
committed by
ACRN System Integration
parent
be0a4b692b
commit
3f84acda09
@@ -241,6 +241,11 @@ void init_pcpu_capabilities(void)
|
||||
&boot_cpu_data.cpuid_leaves[FEAT_8000_0001_EDX]);
|
||||
}
|
||||
|
||||
if (boot_cpu_data.extended_cpuid_level >= CPUID_EXTEND_INVA_TSC) {
|
||||
cpuid(CPUID_EXTEND_INVA_TSC, &eax, &unused, &unused,
|
||||
&boot_cpu_data.cpuid_leaves[FEAT_8000_0007_EDX]);
|
||||
}
|
||||
|
||||
if (boot_cpu_data.extended_cpuid_level >= CPUID_EXTEND_ADDRESS_SIZE) {
|
||||
cpuid(CPUID_EXTEND_ADDRESS_SIZE, &eax,
|
||||
&boot_cpu_data.cpuid_leaves[FEAT_8000_0008_EBX],
|
||||
@@ -366,6 +371,10 @@ int32_t detect_hardware_support(void)
|
||||
(boot_cpu_data.virt_bits == 0U)) {
|
||||
printf("%s, can't detect Linear/Physical Address size\n", __func__);
|
||||
ret = -ENODEV;
|
||||
} else if (!pcpu_has_cap(X86_FEATURE_INVA_TSC)) {
|
||||
/* check invariant TSC */
|
||||
printf("%s, invariant TSC not supported\n", __func__);
|
||||
ret = -ENODEV;
|
||||
} else if (!pcpu_has_cap(X86_FEATURE_TSC_DEADLINE)) {
|
||||
/* lapic TSC deadline timer */
|
||||
printf("%s, TSC deadline not supported\n", __func__);
|
||||
|
Reference in New Issue
Block a user