mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-26 11:28:28 +00:00
x86/hyper-v: stash the max number of virtual/logical processor
Max virtual processor will be needed for 'extended' hypercalls supporting more than 64 vCPUs. While on it, unify on 'Hyper-V' in mshyperv.c as we currently have a mix, report acquired misc features as well. Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2e252fbf77
commit
dd018597a0
@ -28,6 +28,8 @@ struct ms_hyperv_info {
|
|||||||
u32 features;
|
u32 features;
|
||||||
u32 misc_features;
|
u32 misc_features;
|
||||||
u32 hints;
|
u32 hints;
|
||||||
|
u32 max_vp_index;
|
||||||
|
u32 max_lp_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct ms_hyperv_info ms_hyperv;
|
extern struct ms_hyperv_info ms_hyperv;
|
||||||
|
@ -184,9 +184,15 @@ static void __init ms_hyperv_init_platform(void)
|
|||||||
ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES);
|
ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES);
|
||||||
ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO);
|
ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO);
|
||||||
|
|
||||||
pr_info("HyperV: features 0x%x, hints 0x%x\n",
|
pr_info("Hyper-V: features 0x%x, hints 0x%x\n",
|
||||||
ms_hyperv.features, ms_hyperv.hints);
|
ms_hyperv.features, ms_hyperv.hints);
|
||||||
|
|
||||||
|
ms_hyperv.max_vp_index = cpuid_eax(HVCPUID_IMPLEMENTATION_LIMITS);
|
||||||
|
ms_hyperv.max_lp_index = cpuid_ebx(HVCPUID_IMPLEMENTATION_LIMITS);
|
||||||
|
|
||||||
|
pr_debug("Hyper-V: max %u virtual processors, %u logical processors\n",
|
||||||
|
ms_hyperv.max_vp_index, ms_hyperv.max_lp_index);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extract host information.
|
* Extract host information.
|
||||||
*/
|
*/
|
||||||
@ -219,7 +225,7 @@ static void __init ms_hyperv_init_platform(void)
|
|||||||
rdmsrl(HV_X64_MSR_APIC_FREQUENCY, hv_lapic_frequency);
|
rdmsrl(HV_X64_MSR_APIC_FREQUENCY, hv_lapic_frequency);
|
||||||
hv_lapic_frequency = div_u64(hv_lapic_frequency, HZ);
|
hv_lapic_frequency = div_u64(hv_lapic_frequency, HZ);
|
||||||
lapic_timer_frequency = hv_lapic_frequency;
|
lapic_timer_frequency = hv_lapic_frequency;
|
||||||
pr_info("HyperV: LAPIC Timer Frequency: %#x\n",
|
pr_info("Hyper-V: LAPIC Timer Frequency: %#x\n",
|
||||||
lapic_timer_frequency);
|
lapic_timer_frequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +259,7 @@ static void __init ms_hyperv_init_platform(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
|
const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
|
||||||
.name = "Microsoft HyperV",
|
.name = "Microsoft Hyper-V",
|
||||||
.detect = ms_hyperv_platform,
|
.detect = ms_hyperv_platform,
|
||||||
.init_platform = ms_hyperv_init_platform,
|
.init_platform = ms_hyperv_init_platform,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user