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

Conrad Meyer cem at FreeBSD.org
Sun Aug 20 00:41:51 UTC 2017


Author: cem
Date: Sun Aug 20 00:41:49 2017
New Revision: 322710
URL: https://svnweb.freebsd.org/changeset/base/322710

Log:
  hwpstate: Add support for family 17h pstate info from MSRs
  
  This information is normally available via acpi_perf, but in case it is not,
  add support for fetching the information via MSRs on AMD family 17h (Zen)
  processors.  Zen uses a slightly different formula than previous generation
  AMD CPUs.
  
  This was inspired by, but does not fix, PR 221621.
  
  Reported by:	Sean P. R. <seanpr AT swbell.net>
  Reviewed by:	mjoras@
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D12082

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

Modified: head/sys/x86/cpufreq/hwpstate.c
==============================================================================
--- head/sys/x86/cpufreq/hwpstate.c	Sat Aug 19 23:13:33 2017	(r322709)
+++ head/sys/x86/cpufreq/hwpstate.c	Sun Aug 20 00:41:49 2017	(r322710)
@@ -83,6 +83,10 @@ __FBSDID("$FreeBSD$");
 #define	AMD_10H_11H_CUR_DID(msr)		(((msr) >> 6) & 0x07)
 #define	AMD_10H_11H_CUR_FID(msr)		((msr) & 0x3F)
 
+#define	AMD_17H_CUR_VID(msr)			(((msr) >> 14) & 0xFF)
+#define	AMD_17H_CUR_DID(msr)			(((msr) >> 8) & 0x3F)
+#define	AMD_17H_CUR_FID(msr)			((msr) & 0xFF)
+
 #define	HWPSTATE_DEBUG(dev, msg...)			\
 	do{						\
 		if(hwpstate_verbose)			\
@@ -426,6 +430,15 @@ hwpstate_get_info_from_msr(device_t dev)
 		case 0x15:
 		case 0x16:
 			hwpstate_set[i].freq = (100 * (fid + 0x10)) >> did;
+			break;
+		case 0x17:
+			did = AMD_17H_CUR_DID(msr);
+			if (did == 0) {
+				HWPSTATE_DEBUG(dev, "unexpected did: 0\n");
+				did = 1;
+			}
+			fid = AMD_17H_CUR_FID(msr);
+			hwpstate_set[i].freq = (200 * fid) / did;
 			break;
 		default:
 			HWPSTATE_DEBUG(dev, "get_info_from_msr: AMD family"


More information about the svn-src-head mailing list