Author: sbruno
Date: Wed Nov  6 23:29:25 2013
New Revision: 257769
URL: http://svnweb.freebsd.org/changeset/base/257769

Log:
  Fix powerd/states on AMD cpus.  Resolves issues with system reporting:
  hwpstate0: set freq failed, err 6
  
  Tested on FX-8150 and others.
  
  PR:           167018
  Submitted by: avg
  MFC after:    2 weeks

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

Modified: head/sys/x86/cpufreq/hwpstate.c
==============================================================================
--- head/sys/x86/cpufreq/hwpstate.c     Wed Nov  6 22:36:36 2013        
(r257768)
+++ head/sys/x86/cpufreq/hwpstate.c     Wed Nov  6 23:29:25 2013        
(r257769)
@@ -184,16 +184,21 @@ hwpstate_goto_pstate(device_t dev, int p
                        id, PCPU_GET(cpuid));
                /* Go To Px-state */
                wrmsr(MSR_AMD_10H_11H_CONTROL, id);
+       }
+       CPU_FOREACH(i) {
+               /* Bind to each cpu. */
+               thread_lock(curthread);
+               sched_bind(curthread, i);
+               thread_unlock(curthread);
                /* wait loop (100*100 usec is enough ?) */
                for(j = 0; j < 100; j++){
+                       /* get the result. not assure msr=id */
                        msr = rdmsr(MSR_AMD_10H_11H_STATUS);
                        if(msr == id){
                                break;
                        }
                        DELAY(100);
                }
-               /* get the result. not assure msr=id */
-               msr = rdmsr(MSR_AMD_10H_11H_STATUS);
                HWPSTATE_DEBUG(dev, "result  P%d-state on cpu%d\n",
                    (int)msr, PCPU_GET(cpuid));
                if (msr != id) {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to