DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Hunt <david.hunt@intel.com>
To: dev@dpdk.org
Cc: david.hunt@intel.com, liang.j.ma@intel.com
Subject: [dpdk-dev] [PATCH] lib/power: fix error handling on setting governor
Date: Tue,  8 Jan 2019 14:59:26 +0000	[thread overview]
Message-ID: <20190108145926.37367-1-david.hunt@intel.com> (raw)

In the power_set_governor_*() functions, we using fputs() on /sys
filesystem. However, we also need to call fflush() to ensure that
the write completes successfully. Otherwise the attempt to set the
power governor fails and the function returns as if it has
succeeded. This patch adds an fflush to ensure that the
write succeeds, otherwise returns an error.

Fixes: e6c6dc0f96c8 ("power: add p-state driver compatibility")

Signed-off-by: David Hunt <david.hunt@intel.com>
---
 lib/librte_power/power_acpi_cpufreq.c   | 4 ++++
 lib/librte_power/power_pstate_cpufreq.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/lib/librte_power/power_acpi_cpufreq.c b/lib/librte_power/power_acpi_cpufreq.c
index 98dcde31d..45412f0b9 100644
--- a/lib/librte_power/power_acpi_cpufreq.c
+++ b/lib/librte_power/power_acpi_cpufreq.c
@@ -166,6 +166,10 @@ power_set_governor_userspace(struct rte_power_info *pi)
 	val = fputs(POWER_GOVERNOR_USERSPACE, f);
 	FOPS_OR_ERR_GOTO(val, out);
 
+	/* We need to flush to see if the fputs succeeds */
+	val = fflush(f);
+	FOPS_OR_ERR_GOTO(val, out);
+
 	ret = 0;
 	RTE_LOG(INFO, POWER, "Power management governor of lcore %u has been "
 			"set to user space successfully\n", pi->lcore_id);
diff --git a/lib/librte_power/power_pstate_cpufreq.c b/lib/librte_power/power_pstate_cpufreq.c
index 9ec5da511..c4d972fc0 100644
--- a/lib/librte_power/power_pstate_cpufreq.c
+++ b/lib/librte_power/power_pstate_cpufreq.c
@@ -308,6 +308,10 @@ power_set_governor_performance(struct pstate_power_info *pi)
 	val = fputs(POWER_GOVERNOR_PERF, f);
 	FOPS_OR_ERR_GOTO(val, out);
 
+	/* We need to flush to see if the fputs succeeds */
+	val = fflush(f);
+	FOPS_OR_ERR_GOTO(val, out);
+
 	ret = 0;
 	RTE_LOG(INFO, POWER, "Power management governor of lcore %u has been "
 			"set to performance successfully\n", pi->lcore_id);
-- 
2.17.1

             reply	other threads:[~2019-01-08 14:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-08 14:59 David Hunt [this message]
2019-01-14 22:45 ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190108145926.37367-1-david.hunt@intel.com \
    --to=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=liang.j.ma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).