From nobody Mon Jun 12 16:52:38 2023 X-Original-To: dev-commits-src-all@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 4QfyRC1xR6z4dBTC; Mon, 12 Jun 2023 16:52:39 +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 4QfyRB4J4xz3FNs; Mon, 12 Jun 2023 16:52:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1686588758; 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=3pW4uYmznCWjrx/NY6YPnmnBe63x4wKJQn7HtElgUZ0=; b=GXlUP/jSIWPvWE1utWQSJK1EkQgzaAzG3MS9/rJBffqj2Cqu5ljOuP3gMkPjIzPizfeP2K 17OWClQYMhFTf+PtjcpVszU7npDg9Gv86iGJ9jIcmJA/BN8LoHJIEUOyuQ3NtyAnKONhQ5 4+r0MOIIzCuCbGD6ngDF4Q4hOzGpGzz04YQSAspgzCVghz5PJ8rr1aypaCzdf04+6E+6ME yIm91X8w5xShf5BHh7JrFIHtDTVHv16P4jMe1qPMZEk8jwJn6OW2B8E94UP5xHymZ1RvkB LyamJ8nmkSQvRVDj4go15T2kTVNmLBg9MKVjCOnFN+7/k8xxgLAlERNNhm18iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1686588758; 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=3pW4uYmznCWjrx/NY6YPnmnBe63x4wKJQn7HtElgUZ0=; b=omZL5zVbvi6IAbZZbzHEQ4RB6uo6R348KNI8H9eJ/JRwm8NOSgKMImD6Bcld4fcEI5qiAv 3kThZUBhGLQGtt50idOXFbRIsAiXybCOOnpx70YUw37xiOi3g8WgkVbIfCca7O3WQ8ajh5 ub18fdZ8diLAmE/Uz96vSoyasPjfxLPuHFX47FqDF+3fEZJ/6VIrST7x3FX2HwjP4IBHpZ nzh6Nd+feR/0z33Od4kqXhFW7lgVi2KY+2yHXsOioRQMDH83gFrfxGsg0lOiQdzE+rNhdT 9I6FmDwUIbDgxa2UdJb7WFs6r+GV7OC1KQ888CN8h9PMvRsUzTwFEgJy3A2Uxw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1686588758; a=rsa-sha256; cv=none; b=xf0TPFoqTwIAFEDUFM22iKgsRchdnj5Vh9T/IifD90hphRC5IkFwk5ctJ1I2zb4cI3T2kB 2D+9SfXOFE/RDw6su5eY3DeSvoLR96bdfYg+t14v371tuYeWmKrDWkY+G/OhvrE+xDdG5o avLp3NNxuT+MZPTIEIvmfYaq58opuWPNHfPUMWjlYdXwsEUNRYpjBBL+yG2o2sot81ol6q YraichhKUDyaiRSrQbNtZKm6YZia3aeXsGume7PMgXnikt0LhXqlqbQG6kX/3zDgHOBSHk miwJnAvyYd/VnvHsWb6838pJriucHRuM/nHcTNQ9vCm+jUE2ZoDQENCrGVC2wA== 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 4QfyRB35qsznm5; Mon, 12 Jun 2023 16:52:38 +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 35CGqcep093118; Mon, 12 Jun 2023 16:52:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 35CGqcBV093117; Mon, 12 Jun 2023 16:52:38 GMT (envelope-from git) Date: Mon, 12 Jun 2023 16:52:38 GMT Message-Id: <202306121652.35CGqcBV093117@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: e74dd9577fb0 - main - hwpstate_amd: calculate power if P-state info comes from MSR List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: e74dd9577fb00518834a1bf07fad8c1d4c978d7a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e74dd9577fb00518834a1bf07fad8c1d4c978d7a commit e74dd9577fb00518834a1bf07fad8c1d4c978d7a Author: Johannes Totz AuthorDate: 2023-06-12 16:00:15 +0000 Commit: Mark Johnston CommitDate: 2023-06-12 16:52:24 +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 --- 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 58fed8b15863..9d55d3c3baf0 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) @@ -446,6 +448,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: @@ -466,6 +471,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" @@ -475,10 +503,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); }