svn commit: r257769 - head/sys/x86/cpufreq

Sean Bruno sbruno at FreeBSD.org
Wed Nov 6 23:29:30 UTC 2013


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) {


More information about the svn-src-all mailing list