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