View | Details | Raw Unified | Return to bug 216759
Collapse All | Expand All

(-)sys/x86/x86/tsc.c (-3 / +3 lines)
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);

Return to bug 216759