From nobody Mon Jun 26 19:52:31 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QqdmJ2VlSz4gWn1; Mon, 26 Jun 2023 19:52:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QqdmJ1k5yz3RJD; Mon, 26 Jun 2023 19:52:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1687809152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KHNvtzYaDhcahfcQt/BoApDg8bkT13PDhUaX96EF/A8=; b=FjMrQ3HZVgn9fKHMiRtS6XqS4XSoNREiF8zDDqXlD244sMiONziSOQuHZbskieQ8IQJ8Ox 11X/dL+MAcLtvBJVoBQTBjcd4pIpqWOzqQpAWLh+6mBoKoPlmt5xKKyXjYhlty9SI1Hr70 lR7Vcz1ilU0KdZVGAcVjqhglZItbsJomhGLZjWO0SpENX0na7ibMQ1VjpbZDXcdT8+vFQR xUucltgxvT1IBo52mRw14Yx7kQBwIFZFC538NLWzcCkM4Nb7+qNndtu/7c7EHrUzkK4cJo hXhAnUsIPNfmV6AgST3GQK4sTv0jyQQxGAqJEA/GYPTfEUQakmZOfDnG1DFziQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1687809152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KHNvtzYaDhcahfcQt/BoApDg8bkT13PDhUaX96EF/A8=; b=VRV8HDyHE/7yBvMfUbheTNS5qW4kHDI0v6i37ZMko7uXQkCRo9uIucHcumnAHFYIQ19R3B xdhDGIKtXgvwwd+jHJElGZm38bHbkqxlUp8qsEgvY0BXrOIGcZsvvci1rPCss5yK6p3CJ2 oXaLijnckT8h3w1EH9dEAIeNLw+uxNycBYseFMIgNMWLNP0sLrefZl7W2UKAYlCD/4Ames iAhp6ok+iISUwnNd6IPoCYBOI0tYhqJpOTeNPWF3wlf1cTaHkrA6REyiGK55dDF/+yWXaf 2GF4u/Le9ILDrH3OtkAkXrBggYoT+ESAdJhDENCRA9LFBKM671f5ujs28e2hPw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1687809152; a=rsa-sha256; cv=none; b=gHMXN9nHQ81K1bC3kEERxThIJTGiwZwkYp5vAQDFFrwxxoab3p9wVFTFh5soTMMFdn3xIX bY2l+dlU0ybCbb9fRGUnO9xPoqc1Fs1NKHbyXBHg3UO5cYbD7V2QIPrT7QMABzMKDIzfmn AvmSzin7mWaLxeabvbUawWXPaCEBWODSKD+d609q0YvojzFbhIHUik8A8CZ/o1jELDySfI abNPjVYZMBAuERbadJkOiUSfgxPn/ob7MyEanmEUcwC8QXEo24Qy7Ltt6T3mh8vqJDYcT8 G0bgY2VmSMVxl6oc3CUK+mHQGTYgR+R6irB7xOAPvUVnE0AhczEEOAmunCvliQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QqdmJ0T2SzN3T; Mon, 26 Jun 2023 19:52:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 35QJqVKb063688; Mon, 26 Jun 2023 19:52:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 35QJqVCu063687; Mon, 26 Jun 2023 19:52:31 GMT (envelope-from git) Date: Mon, 26 Jun 2023 19:52:31 GMT Message-Id: <202306261952.35QJqVCu063687@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: b44b64eeff1d - stable/13 - hwpstate_amd: calculate power if P-state info comes from MSR List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b44b64eeff1dac47fe0c0922a471b9785c27d266 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=b44b64eeff1dac47fe0c0922a471b9785c27d266 commit b44b64eeff1dac47fe0c0922a471b9785c27d266 Author: Johannes Totz AuthorDate: 2023-06-12 16:00:15 +0000 Commit: Mark Johnston CommitDate: 2023-06-26 19:52:08 +0000 hwpstate_amd: calculate power if P-state info comes from MSR Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D40140 (cherry picked from commit e74dd9577fb00518834a1bf07fad8c1d4c978d7a) --- sys/x86/cpufreq/hwpstate_amd.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/sys/x86/cpufreq/hwpstate_amd.c b/sys/x86/cpufreq/hwpstate_amd.c index 3193cbd908cc..3760b40ad397 100644 --- a/sys/x86/cpufreq/hwpstate_amd.c +++ b/sys/x86/cpufreq/hwpstate_amd.c @@ -85,6 +85,8 @@ __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_IDIV(msr) (((msr) >> 30) & 0x03) +#define AMD_17H_CUR_IDD(msr) (((msr) >> 22) & 0xFF) #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) @@ -447,6 +449,9 @@ hwpstate_get_info_from_msr(device_t dev) did = AMD_10H_11H_CUR_DID(msr); fid = AMD_10H_11H_CUR_FID(msr); + hwpstate_set[i].volts = CPUFREQ_VAL_UNKNOWN; + hwpstate_set[i].power = CPUFREQ_VAL_UNKNOWN; + hwpstate_set[i].lat = CPUFREQ_VAL_UNKNOWN; /* Convert fid/did to frequency. */ switch (family) { case 0x11: @@ -467,6 +472,29 @@ hwpstate_get_info_from_msr(device_t dev) } fid = AMD_17H_CUR_FID(msr); hwpstate_set[i].freq = (200 * fid) / did; + /* Vid step is 6.25mV, so scale by 100. */ + hwpstate_set[i].volts = + (155000 - (625 * AMD_17H_CUR_VID(msr))) / 100; + /* + * Calculate current first. + * This equation is mentioned in + * "BKDG for AMD Family 15h Models 70h-7fh Processors", + * section 2.5.2.1.6. + */ + hwpstate_set[i].power = AMD_17H_CUR_IDD(msr) * 1000; + switch (AMD_17H_CUR_IDIV(msr)) { + case 3: /* divide by 1000 */ + hwpstate_set[i].power /= 10; + case 2: /* divide by 100 */ + hwpstate_set[i].power /= 10; + case 1: /* divide by 10 */ + hwpstate_set[i].power /= 10; + case 0: /* divide by 1 */ + ; + } + hwpstate_set[i].power *= hwpstate_set[i].volts; + /* Milli amps * milli volts to milli watts. */ + hwpstate_set[i].power /= 1000; break; default: HWPSTATE_DEBUG(dev, "get_info_from_msr: %s family" @@ -476,10 +504,6 @@ hwpstate_get_info_from_msr(device_t dev) return (ENXIO); } hwpstate_set[i].pstate_id = i; - /* There was volts calculation, but deleted it. */ - hwpstate_set[i].volts = CPUFREQ_VAL_UNKNOWN; - hwpstate_set[i].power = CPUFREQ_VAL_UNKNOWN; - hwpstate_set[i].lat = CPUFREQ_VAL_UNKNOWN; } return (0); }