Author: cem
Date: Sat Feb  1 17:54:46 2020
New Revision: 357373
URL: https://svnweb.freebsd.org/changeset/base/357373

Log:
  intel_hwpstate(4): Use identcpu-cached cpuid 6 leaf
  
  No functional change.

Modified:
  head/sys/x86/cpufreq/hwpstate_intel.c

Modified: head/sys/x86/cpufreq/hwpstate_intel.c
==============================================================================
--- head/sys/x86/cpufreq/hwpstate_intel.c       Sat Feb  1 17:30:45 2020        
(r357372)
+++ head/sys/x86/cpufreq/hwpstate_intel.c       Sat Feb  1 17:54:46 2020        
(r357373)
@@ -266,8 +266,6 @@ out:
 void
 intel_hwpstate_identify(driver_t *driver, device_t parent)
 {
-       uint32_t regs[4];
-
        if (device_find_child(parent, "hwpstate_intel", -1) != NULL)
                return;
 
@@ -279,25 +277,12 @@ intel_hwpstate_identify(driver_t *driver, device_t par
 
        /*
         * Intel SDM 14.4.1 (HWP Programming Interfaces):
-        *   The CPUID instruction allows software to discover the presence of
-        *   HWP support in an Intel processor. Specifically, execute CPUID
-        *   instruction with EAX=06H as input will return 5 bit flags covering
-        *   the following aspects in bits 7 through 11 of CPUID.06H:EAX.
-        */
-
-       if (cpu_high < 6)
-               return;
-
-       /*
-        * Intel SDM 14.4.1 (HWP Programming Interfaces):
         *   Availability of HWP baseline resource and capability,
         *   CPUID.06H:EAX[bit 7]: If this bit is set, HWP provides several new
         *   architectural MSRs: IA32_PM_ENABLE, IA32_HWP_CAPABILITIES,
         *   IA32_HWP_REQUEST, IA32_HWP_STATUS.
         */
-
-       do_cpuid(6, regs);
-       if ((regs[0] & CPUTPM1_HWP) == 0)
+       if ((cpu_power_eax & CPUTPM1_HWP) == 0)
                return;
 
        if (BUS_ADD_CHILD(parent, 10, "hwpstate_intel", -1) == NULL)
@@ -396,20 +381,18 @@ static int
 intel_hwpstate_attach(device_t dev)
 {
        struct hwp_softc *sc;
-       uint32_t regs[4];
        int ret;
 
        sc = device_get_softc(dev);
        sc->dev = dev;
 
-       do_cpuid(6, regs);
-       if (regs[0] & CPUTPM1_HWP_NOTIFICATION)
+       if (cpu_power_eax & CPUTPM1_HWP_NOTIFICATION)
                sc->hwp_notifications = true;
-       if (regs[0] & CPUTPM1_HWP_ACTIVITY_WINDOW)
+       if (cpu_power_eax & CPUTPM1_HWP_ACTIVITY_WINDOW)
                sc->hwp_activity_window = true;
-       if (regs[0] & CPUTPM1_HWP_PERF_PREF)
+       if (cpu_power_eax & CPUTPM1_HWP_PERF_PREF)
                sc->hwp_pref_ctrl = true;
-       if (regs[0] & CPUTPM1_HWP_PKG)
+       if (cpu_power_eax & CPUTPM1_HWP_PKG)
                sc->hwp_pkg_ctrl = true;
 
        ret = set_autonomous_hwp(sc);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to