Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157087096
D54999.id171346.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D54999.id171346.diff
View Options
diff --git a/sys/x86/cpufreq/hwpstate_amd.c b/sys/x86/cpufreq/hwpstate_amd.c
--- a/sys/x86/cpufreq/hwpstate_amd.c
+++ b/sys/x86/cpufreq/hwpstate_amd.c
@@ -60,6 +60,7 @@
#include <sys/smp.h>
#include <sys/sched.h>
+#include <machine/_inttypes.h>
#include <machine/md_var.h>
#include <machine/cputypes.h>
#include <machine/specialreg.h>
@@ -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 @@
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 @@
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)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, May 19, 9:04 AM (17 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33304031
Default Alt Text
D54999.id171346.diff (3 KB)
Attached To
Mode
D54999: hwpstate_amd(4): Factor out printing CPPC registers, fix CPPC_REQUEST's
Attached
Detach File
Event Timeline
Log In to Comment