vmm: Add Hygon Dhyana support.
Submitted by: Pu Wen <puwen@hygon.cn> Discussed with: grehan Reviewed by: jhb (previous version) MFC after: 1 week Differential revision: https://reviews.freebsd.org/D23553
This commit is contained in:
parent
fe91dd0138
commit
caab504277
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=357865
@ -184,7 +184,7 @@ iommu_init(void)
|
||||
|
||||
if (vmm_is_intel())
|
||||
ops = &iommu_ops_intel;
|
||||
else if (vmm_is_amd())
|
||||
else if (vmm_is_svm())
|
||||
ops = &iommu_ops_amd;
|
||||
else
|
||||
ops = NULL;
|
||||
|
@ -347,7 +347,7 @@ vmm_init(void)
|
||||
|
||||
if (vmm_is_intel())
|
||||
ops = &vmm_ops_intel;
|
||||
else if (vmm_is_amd())
|
||||
else if (vmm_is_svm())
|
||||
ops = &vmm_ops_amd;
|
||||
else
|
||||
return (ENXIO);
|
||||
|
@ -67,7 +67,7 @@ vmm_stat_register(void *arg)
|
||||
if (vst->scope == VMM_STAT_SCOPE_INTEL && !vmm_is_intel())
|
||||
return;
|
||||
|
||||
if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_amd())
|
||||
if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_svm())
|
||||
return;
|
||||
|
||||
if (vst_num_elems + vst->nelems >= MAX_VMM_STAT_ELEMS) {
|
||||
|
@ -46,9 +46,10 @@ vmm_is_intel(void)
|
||||
}
|
||||
|
||||
bool
|
||||
vmm_is_amd(void)
|
||||
vmm_is_svm(void)
|
||||
{
|
||||
return (strcmp(cpu_vendor, "AuthenticAMD") == 0);
|
||||
return (strcmp(cpu_vendor, "AuthenticAMD") == 0 ||
|
||||
strcmp(cpu_vendor, "HygonGenuine") == 0);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -34,7 +34,7 @@
|
||||
struct trapframe;
|
||||
|
||||
bool vmm_is_intel(void);
|
||||
bool vmm_is_amd(void);
|
||||
bool vmm_is_svm(void);
|
||||
bool vmm_supports_1G_pages(void);
|
||||
|
||||
void dump_trapframe(struct trapframe *tf);
|
||||
|
@ -135,7 +135,7 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id,
|
||||
break;
|
||||
case CPUID_8000_0008:
|
||||
cpuid_count(*eax, *ecx, regs);
|
||||
if (vmm_is_amd()) {
|
||||
if (vmm_is_svm()) {
|
||||
/*
|
||||
* As on Intel (0000_0007:0, EDX), mask out
|
||||
* unsupported or unsafe AMD extended features
|
||||
@ -234,7 +234,7 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id,
|
||||
|
||||
case CPUID_8000_001D:
|
||||
/* AMD Cache topology, like 0000_0004 for Intel. */
|
||||
if (!vmm_is_amd())
|
||||
if (!vmm_is_svm())
|
||||
goto default_leaf;
|
||||
|
||||
/*
|
||||
@ -276,8 +276,11 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id,
|
||||
break;
|
||||
|
||||
case CPUID_8000_001E:
|
||||
/* AMD Family 16h+ additional identifiers */
|
||||
if (!vmm_is_amd() || CPUID_TO_FAMILY(cpu_id) < 0x16)
|
||||
/*
|
||||
* AMD Family 16h+ and Hygon Family 18h additional
|
||||
* identifiers.
|
||||
*/
|
||||
if (!vmm_is_svm() || CPUID_TO_FAMILY(cpu_id) < 0x16)
|
||||
goto default_leaf;
|
||||
|
||||
vm_get_topology(vm, &sockets, &cores, &threads,
|
||||
|
Loading…
Reference in New Issue
Block a user