From nobody Fri Feb 6 16:29:16 2026 X-Original-To: dev-commits-src-main@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 4f700X4R0Nz6RPmm for ; Fri, 06 Feb 2026 16:29:16 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f700X3d56z43sP for ; Fri, 06 Feb 2026 16:29:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770395356; 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=gUw26HEcgIUzkVBS3umTG0Nxo6oIPiOmuLfQVjOKxbE=; b=P2eFI8ejqYi9Yska1L1v78x69P/y8+5j03eIa4ecWVR38FYKJKDNiaDQZp4lIEHMj3lxmY nEE2ojBNRwy2lV8BewN0kWOY8uII5fD1qLm5WFVz7vrcKCrFucLTnJHCKPcJYYX0sLcESW m1YU6UTeAsBanfv/HtdFCgHJwLNzFdSzA7+TCX4JB6OG46HK5AGLTwU5n1VlkrVXBt4ezK bTKFEbOn9carp7OEsJMyiM+ceSfpQ44tNt22LzycudoY6e0Vj75zSMGh6g4DMfPLSo8xOL E1m+rQyyWFk2iRyZGCvnFsXq4CzYz/DMTRVBtU2OM5gNjqqbP0J4H36k/qBE5Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770395356; a=rsa-sha256; cv=none; b=o6+9Z7DGM1uZkRXZKYte80/iXc98tFScxdomht0RXHz1+viJQAXkP+LFn6gY+ZdydYJ/Nn Be8o36TzrXUn6eYsx1VcVeblNLIwp0dwdYzRPbHruvrY6wd8w9UOFtTCsRMyeSabWCov7j 89poeL0joCzsm+n9vqAJtZi4qX1ZuxFmuZ3+LS/b+w5wkRBI1RcWN4lNybLNdJTuuO6pqn u1xcYJUCxwvEkFNZmPaIDLpKCmeXbPz3/KTrx4DmKcE/qFUD6CXIWP4cT0OMX/1X9BJEbU 6DlXrAAcQFsn+HvyS68zxrHFHs2n0f9/blX1tKB0WOD9FoKfLNCvhJKgtUkJVQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770395356; 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=gUw26HEcgIUzkVBS3umTG0Nxo6oIPiOmuLfQVjOKxbE=; b=Pi/4K+TDqCXAwF4a5XokOmNkoePdzcyAcuSpNuA7AskO/RHT8Ejk+r3ydoO5LcehSZ2wJA a3y1klMtDJ+elPQSS46JvtLms1tfvYlxrcjbFdaO6NdRhBJxFUmlknpWe4HUbmntR1HCp+ /+2oCMnqwFdCuOIxr7b0kWjgpVVMmFnbgE32lS3raYpjRAtYc5dWo/b2NZlQyY/2m9j250 hJs49nemQErs1AIQN09zdWMv4i7fI9SNR8RpkZv5KunGc1HpAGfeLjmcBfeSQU9dMA6kZr ca/fAjPWJv281J8TUD9PGC/LvciF7XZPxUPNTpdvz9eJ4vEL1q8j6YpjcJL2LQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f700X3B0cz7W4 for ; Fri, 06 Feb 2026 16:29:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1dd41 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 06 Feb 2026 16:29:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: 73c9d843ffb9 - main - hwpstate_amd(4): Factor out printing CPPC registers, fix CPPC_REQUEST's List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 73c9d843ffb9d816737aa2cef7551923e68e6eaf Auto-Submitted: auto-generated Date: Fri, 06 Feb 2026 16:29:16 +0000 Message-Id: <698616dc.1dd41.7fce5a2d@gitrepo.freebsd.org> The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=73c9d843ffb9d816737aa2cef7551923e68e6eaf commit 73c9d843ffb9d816737aa2cef7551923e68e6eaf Author: Olivier Certner AuthorDate: 2026-01-29 10:16:27 +0000 Commit: Olivier Certner CommitDate: 2026-02-06 16:27:27 +0000 hwpstate_amd(4): Factor out printing CPPC registers, fix CPPC_REQUEST's Factor out these printing, so they can be called from other places than just the register dump handler. This also makes surrounding code clearer. Fix inverted printing of minimum and maximum performance. For better diagnostic, print the full raw content of each register before printing the value of fields we know about. As fields are printed in decimal, remove 0-padding, which could give the impression that the numbers are printed in octal or hexadecimal. While here, remove superfluous blank lines when printing (we use TABs for the different registers' fields). Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D54999 --- sys/x86/cpufreq/hwpstate_amd.c | 65 ++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/sys/x86/cpufreq/hwpstate_amd.c b/sys/x86/cpufreq/hwpstate_amd.c index 0afc0919aa16..aaaaa394058f 100644 --- a/sys/x86/cpufreq/hwpstate_amd.c +++ b/sys/x86/cpufreq/hwpstate_amd.c @@ -60,6 +60,7 @@ #include #include +#include #include #include #include @@ -84,6 +85,9 @@ #define MSR_AMD_CPPC_REQUEST 0xc00102b3 #define MSR_AMD_CPPC_STATUS 0xc00102b4 +#define MSR_AMD_CPPC_CAPS_1_NAME "CPPC_CAPABILITY_1" +#define MSR_AMD_CPPC_REQUEST_NAME "CPPC_REQUEST" + #define MSR_AMD_PWR_ACC 0xc001007a #define MSR_AMD_PWR_ACC_MX 0xc001007b @@ -205,6 +209,43 @@ struct amdhwp_dump_sysctl_handler_request { int res; }; +static void +print_msr_bits(struct sbuf *const sb, const char *const legend, + const uint64_t bits, const uint64_t msr_value) +{ + sbuf_printf(sb, "\t%s: %" PRIu64 "\n", legend, + BITS_VALUE(bits, msr_value)); +} + +static void +print_cppc_caps_1(struct sbuf *const sb, const uint64_t caps) +{ + sbuf_printf(sb, MSR_AMD_CPPC_CAPS_1_NAME ": %#016" PRIx64 "\n", caps); + print_msr_bits(sb, "Highest Performance", + AMD_CPPC_CAPS_1_HIGHEST_PERF_BITS, caps); + print_msr_bits(sb, "Guaranteed Performance", + AMD_CPPC_CAPS_1_NOMINAL_PERF_BITS, caps); + print_msr_bits(sb, "Efficient Performance", + AMD_CPPC_CAPS_1_EFFICIENT_PERF_BITS, caps); + print_msr_bits(sb, "Lowest Performance", + AMD_CPPC_CAPS_1_LOWEST_PERF_BITS, caps); +} + +static void +print_cppc_request(struct sbuf *const sb, const uint64_t request) +{ + sbuf_printf(sb, MSR_AMD_CPPC_REQUEST_NAME ": %#016" PRIx64 "\n", + request); + print_msr_bits(sb, "Efficiency / Energy Preference", + AMD_CPPC_REQUEST_EPP_BITS, request); + print_msr_bits(sb, "Desired Performance", + AMD_CPPC_REQUEST_DES_PERF_BITS, request); + print_msr_bits(sb, "Minimum Performance", + AMD_CPPC_REQUEST_MIN_PERF_BITS, request); + print_msr_bits(sb, "Maximum Performance", + AMD_CPPC_REQUEST_MAX_PERF_BITS, request); +} + static void amdhwp_dump_sysctl_handler_cb(void *args) { @@ -251,30 +292,10 @@ amdhwp_dump_sysctl_handler(SYSCTL_HANDLER_ARGS) goto out; data = request.caps; - sbuf_printf(sb, "\tHighest Performance: %03ju\n", - BITS_VALUE(AMD_CPPC_CAPS_1_HIGHEST_PERF_BITS, data)); - sbuf_printf(sb, "\tGuaranteed Performance: %03ju\n", - BITS_VALUE(AMD_CPPC_CAPS_1_NOMINAL_PERF_BITS, data)); - sbuf_printf(sb, "\tEfficient Performance: %03ju\n", - BITS_VALUE(AMD_CPPC_CAPS_1_EFFICIENT_PERF_BITS, data)); - sbuf_printf(sb, "\tLowest Performance: %03ju\n", - BITS_VALUE(AMD_CPPC_CAPS_1_LOWEST_PERF_BITS, data)); - sbuf_putc(sb, '\n'); + print_cppc_caps_1(sb, data); data = request.req; -#define pkg_print(name, offset) \ - do { \ - sbuf_printf(sb, "\t%s: %03u\n", name, \ - (unsigned)(data >> offset) & 0xff); \ - } while (0) - - pkg_print("Requested Efficiency Performance Preference", 24); - pkg_print("Requested Desired Performance", 16); - pkg_print("Requested Maximum Performance", 8); - pkg_print("Requested Minimum Performance", 0); -#undef pkg_print - - sbuf_putc(sb, '\n'); + print_cppc_request(sb, data); out: if (ret == 0)