linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation
@ 2021-04-28  9:08 Chen Yu
  2021-04-28  9:09 ` [PATCH 1/2] tools/power/turbostat: Fix turbostat for AMD Zen CPUs Chen Yu
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Chen Yu @ 2021-04-28  9:08 UTC (permalink / raw)
  To: youling257, Kurt Garloff, Bingsong Si, Artem S . Tashkinov
  Cc: Terry Bowman, Bas Nieuwenhuizen, Calvin Walton, Borislav Petkov,
	linux-pm, linux-kernel, Chen Yu

A combination of patch set to fix the recently introduced long time
duration RAPL calculation issue found on AMD CPUs.

Youling, Kurt, Bingsong, Artem, could you please confirm again
if this patch set works for you on your platform?

Bas Nieuwenhuizen (1):
  tools/power/turbostat: Fix turbostat for AMD Zen CPUs

Calvin Walton (1):
  tools/power turbostat: Fix offset overflow issue in index converting

 tools/power/x86/turbostat/turbostat.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] tools/power/turbostat: Fix turbostat for AMD Zen CPUs
  2021-04-28  9:08 [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Chen Yu
@ 2021-04-28  9:09 ` Chen Yu
  2021-04-28  9:09 ` [PATCH 2/2] tools/power turbostat: Fix offset overflow issue in index converting Chen Yu
  2021-04-29 19:47 ` [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Terry Bowman
  2 siblings, 0 replies; 4+ messages in thread
From: Chen Yu @ 2021-04-28  9:09 UTC (permalink / raw)
  To: youling257, Kurt Garloff, Bingsong Si, Artem S . Tashkinov
  Cc: Terry Bowman, Bas Nieuwenhuizen, Calvin Walton, Borislav Petkov,
	linux-pm, linux-kernel, Chen Yu

From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>

It was reported that on Zen+ system turbostat started exiting,
which was tracked down to the MSR_PKG_ENERGY_STAT read failing because
offset_to_idx wasn't returning a non-negative index.

This patch combined the modification from Bingsong Si and
Bas Nieuwenhuizen and addd the MSR to the index system as alternative for
MSR_PKG_ENERGY_STATUS.

Fixes: 9972d5d84d76 ("tools/power turbostat: Enable accumulate RAPL display")
Reported-by: youling257 <youling257@gmail.com>
Tested-by: youling257 <youling257@gmail.com>
Tested-by: Kurt Garloff <kurt@garloff.de>
Tested-by: Bingsong Si <owen.si@ucloud.cn>
Tested-by: Artem S. Tashkinov <aros@gmx.com>
Co-developed-by: Bingsong Si <owen.si@ucloud.cn>
Co-developed-by: Terry Bowman <terry.bowman@amd.com>
Reviewed-by: Chen Yu <yu.c.chen@intel.com>
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
---
 tools/power/x86/turbostat/turbostat.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 5939615265f1..37759d6c463d 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -297,7 +297,10 @@ int idx_to_offset(int idx)
 
 	switch (idx) {
 	case IDX_PKG_ENERGY:
-		offset = MSR_PKG_ENERGY_STATUS;
+		if (do_rapl & RAPL_AMD_F17H)
+			offset = MSR_PKG_ENERGY_STAT;
+		else
+			offset = MSR_PKG_ENERGY_STATUS;
 		break;
 	case IDX_DRAM_ENERGY:
 		offset = MSR_DRAM_ENERGY_STATUS;
@@ -326,6 +329,7 @@ int offset_to_idx(int offset)
 
 	switch (offset) {
 	case MSR_PKG_ENERGY_STATUS:
+	case MSR_PKG_ENERGY_STAT:
 		idx = IDX_PKG_ENERGY;
 		break;
 	case MSR_DRAM_ENERGY_STATUS:
@@ -353,7 +357,7 @@ int idx_valid(int idx)
 {
 	switch (idx) {
 	case IDX_PKG_ENERGY:
-		return do_rapl & RAPL_PKG;
+		return do_rapl & (RAPL_PKG | RAPL_AMD_F17H);
 	case IDX_DRAM_ENERGY:
 		return do_rapl & RAPL_DRAM;
 	case IDX_PP0_ENERGY:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] tools/power turbostat: Fix offset overflow issue in index converting
  2021-04-28  9:08 [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Chen Yu
  2021-04-28  9:09 ` [PATCH 1/2] tools/power/turbostat: Fix turbostat for AMD Zen CPUs Chen Yu
@ 2021-04-28  9:09 ` Chen Yu
  2021-04-29 19:47 ` [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Terry Bowman
  2 siblings, 0 replies; 4+ messages in thread
From: Chen Yu @ 2021-04-28  9:09 UTC (permalink / raw)
  To: youling257, Kurt Garloff, Bingsong Si, Artem S . Tashkinov
  Cc: Terry Bowman, Bas Nieuwenhuizen, Calvin Walton, Borislav Petkov,
	linux-pm, linux-kernel

From: Calvin Walton <calvin.walton@kepstin.ca>

The idx_to_offset() function returns type int (32-bit signed), but
MSR_PKG_ENERGY_STAT is u32 and would be interpreted as a negative number.
The end result is that it hits the if (offset < 0) check in update_msr_sum()
which prevents the timer callback from updating the stat in the background when
long durations are used. The similar issue exists in offset_to_idx() and
update_msr_sum(). Fix this issue by converting the 'int' to 'off_t' accordingly.

Fixes: 9972d5d84d76 ("tools/power turbostat: Enable accumulate RAPL display")
Signed-off-by: Calvin Walton <calvin.walton@kepstin.ca>
---
 tools/power/x86/turbostat/turbostat.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 37759d6c463d..085057daef86 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -291,9 +291,9 @@ struct msr_sum_array {
 /* The percpu MSR sum array.*/
 struct msr_sum_array *per_cpu_msr_sum;
 
-int idx_to_offset(int idx)
+off_t idx_to_offset(int idx)
 {
-	int offset;
+	off_t offset;
 
 	switch (idx) {
 	case IDX_PKG_ENERGY:
@@ -323,7 +323,7 @@ int idx_to_offset(int idx)
 	return offset;
 }
 
-int offset_to_idx(int offset)
+int offset_to_idx(off_t offset)
 {
 	int idx;
 
@@ -3276,7 +3276,7 @@ static int update_msr_sum(struct thread_data *t, struct core_data *c, struct pkg
 
 	for (i = IDX_PKG_ENERGY; i < IDX_COUNT; i++) {
 		unsigned long long msr_cur, msr_last;
-		int offset;
+		off_t offset;
 
 		if (!idx_valid(i))
 			continue;
@@ -3285,7 +3285,8 @@ static int update_msr_sum(struct thread_data *t, struct core_data *c, struct pkg
 			continue;
 		ret = get_msr(cpu, offset, &msr_cur);
 		if (ret) {
-			fprintf(outf, "Can not update msr(0x%x)\n", offset);
+			fprintf(outf, "Can not update msr(0x%llx)\n",
+				(unsigned long long)offset);
 			continue;
 		}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation
  2021-04-28  9:08 [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Chen Yu
  2021-04-28  9:09 ` [PATCH 1/2] tools/power/turbostat: Fix turbostat for AMD Zen CPUs Chen Yu
  2021-04-28  9:09 ` [PATCH 2/2] tools/power turbostat: Fix offset overflow issue in index converting Chen Yu
@ 2021-04-29 19:47 ` Terry Bowman
  2 siblings, 0 replies; 4+ messages in thread
From: Terry Bowman @ 2021-04-29 19:47 UTC (permalink / raw)
  To: Chen Yu, youling257, Kurt Garloff, Bingsong Si, Artem S . Tashkinov
  Cc: Bas Nieuwenhuizen, Calvin Walton, Borislav Petkov, linux-pm,
	linux-kernel

Both patches look good to me. I tested both on AMD Epyc Rome. Iverified
the missing output is fixed and used instrumentationto verify the
sign-extension issues are resolved.

Please add:
Signed-off-by: Terry Bowman <Terry.Bowman@amd.com>

Regards,
Terry

On 4/28/21 4:08 AM, Chen Yu wrote:
> A combination of patch set to fix the recently introduced long time
> duration RAPL calculation issue found on AMD CPUs.
>
> Youling, Kurt, Bingsong, Artem, could you please confirm again
> if this patch set works for you on your platform?
>
> Bas Nieuwenhuizen (1):
>    tools/power/turbostat: Fix turbostat for AMD Zen CPUs
>
> Calvin Walton (1):
>    tools/power turbostat: Fix offset overflow issue in index converting
>
>   tools/power/x86/turbostat/turbostat.c | 19 ++++++++++++-------
>   1 file changed, 12 insertions(+), 7 deletions(-)
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-04-29 19:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-28  9:08 [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Chen Yu
2021-04-28  9:09 ` [PATCH 1/2] tools/power/turbostat: Fix turbostat for AMD Zen CPUs Chen Yu
2021-04-28  9:09 ` [PATCH 2/2] tools/power turbostat: Fix offset overflow issue in index converting Chen Yu
2021-04-29 19:47 ` [PATCH 0/2] tools/power/turbostat: Fix long time duration RAPL calculation Terry Bowman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).