power: fix error handling on setting governor

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>
This commit is contained in:
David Hunt 2019-01-08 14:59:26 +00:00 committed by Thomas Monjalon
parent 423aa5e130
commit de394915df
2 changed files with 8 additions and 0 deletions

View File

@ -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);

View File

@ -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);