Lines 208-214
Link Here
|
208 |
switch (cpu_vendor_id) { |
208 |
switch (cpu_vendor_id) { |
209 |
case CPU_VENDOR_AMD: |
209 |
case CPU_VENDOR_AMD: |
210 |
if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || |
210 |
if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || |
211 |
(vm_guest == VM_GUEST_NO && |
211 |
((vm_guest == VM_GUEST_NO || vm_guest == VM_GUEST_VM) && |
212 |
CPUID_TO_FAMILY(cpu_id) >= 0x10)) |
212 |
CPUID_TO_FAMILY(cpu_id) >= 0x10)) |
213 |
tsc_is_invariant = 1; |
213 |
tsc_is_invariant = 1; |
214 |
if (cpu_feature & CPUID_SSE2) { |
214 |
if (cpu_feature & CPUID_SSE2) { |
Lines 218-224
Link Here
|
218 |
break; |
218 |
break; |
219 |
case CPU_VENDOR_INTEL: |
219 |
case CPU_VENDOR_INTEL: |
220 |
if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || |
220 |
if ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || |
221 |
(vm_guest == VM_GUEST_NO && |
221 |
((vm_guest == VM_GUEST_NO || vm_guest == VM_GUEST_VM) && |
222 |
((CPUID_TO_FAMILY(cpu_id) == 0x6 && |
222 |
((CPUID_TO_FAMILY(cpu_id) == 0x6 && |
223 |
CPUID_TO_MODEL(cpu_id) >= 0xe) || |
223 |
CPUID_TO_MODEL(cpu_id) >= 0xe) || |
224 |
(CPUID_TO_FAMILY(cpu_id) == 0xf && |
224 |
(CPUID_TO_FAMILY(cpu_id) == 0xf && |
Lines 425-431
Link Here
|
425 |
uint64_t *data, *tsc; |
425 |
uint64_t *data, *tsc; |
426 |
u_int i, size, adj; |
426 |
u_int i, size, adj; |
427 |
|
427 |
|
428 |
if ((!smp_tsc && !tsc_is_invariant) || vm_guest) |
428 |
if ((!smp_tsc && !tsc_is_invariant) || (vm_guest && vm_guest != VM_GUEST_VM)) |
429 |
return (-100); |
429 |
return (-100); |
430 |
size = (mp_maxid + 1) * 3; |
430 |
size = (mp_maxid + 1) * 3; |
431 |
data = malloc(sizeof(*data) * size * N, M_TEMP, M_WAITOK); |
431 |
data = malloc(sizeof(*data) * size * N, M_TEMP, M_WAITOK); |