1 #include <sys/param.h>
2 #include <sys/bus.h>
3 #include <sys/kernel.h>
4 #include <sys/systm.h>
5 #include <sys/sysctl.h>
6 
7 #include <machine/cpufunc.h>
8 #include <machine/cputypes.h>
9 #include <machine/md_var.h>
10 #include <machine/specialreg.h>
11 
12 #include "acpi.h"
13 #include "acpivar.h"
14 #include "acpi_cpu.h"
15 
16 uint32_t
17 acpi_cpu_md_features(void)
18 {
19 	uint32_t features = 0;
20 
21 	if (cpu_vendor_id == CPU_VENDOR_INTEL) {
22 		if (cpu_feature2 & CPUID2_EST) {
23 			features |= ACPI_PDC_PX_MSR |
24 			    ACPI_PDC_MP_PX_SWCOORD |
25 			    ACPI_PDC_PX_HWCOORD;
26 		}
27 		if ((cpu_feature2 & CPUID2_MON) &&
28 		    (cpu_mwait_feature &
29 		     (CPUID_MWAIT_EXT | CPUID_MWAIT_INTBRK)) ==
30 		    (CPUID_MWAIT_EXT | CPUID_MWAIT_INTBRK)) {
31 			features |= ACPI_PDC_MP_C1_NATIVE |
32 			    ACPI_PDC_MP_C2C3_NATIVE;
33 		}
34 	}
35 	return features;
36 }
37