Skip to content

Commit

Permalink
Merge tag 'pm-4.14-rc3' of git://git.kernel.org/pub/scm/linux/kernel/…
Browse files Browse the repository at this point in the history
…git/rafael/linux-pm

Pull power management fixes from Rafael Wysocki:
 "These fix a deadlock in the operating performance points (OPP)
  framework introduced during the 4.11 cycle, more issues with duplicate
  device objects for cpufreq-dt and cpufreq documentation.

  Specifics:

   - Fix a deadlock in the operating performance points (OPP) framework
     caused by a notifier callback taking a lock that's already held by
     its caller (Viresh Kumar).

   - Prevent the ti-cpufreq and cpufreq-dt-platdev drivers from
     attempting to register conflicting device objects which triggers a
     warning from sysfs (Suniel Mahesh).

   - Drop a stale reference to a piece of intel_pstate documentation
     that's not in the tree any more (Rafael Wysocki)"

* tag 'pm-4.14-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  cpufreq: docs: Drop intel-pstate.txt from index.txt
  cpufreq: dt: Fix sysfs duplicate filename creation for platform-device
  PM / OPP: Call notifier without holding opp_table->lock
  • Loading branch information
Linus Torvalds committed Sep 28, 2017
2 parents 02a2b05 + abeb19a commit 74de818
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 deletions.
2 changes: 0 additions & 2 deletions Documentation/cpu-freq/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ cpufreq-stats.txt - General description of sysfs cpufreq stats.

index.txt - File index, Mailing list and Links (this document)

intel-pstate.txt - Intel pstate cpufreq driver specific file.

pcc-cpufreq.txt - PCC cpufreq driver specific file.


Expand Down
7 changes: 7 additions & 0 deletions drivers/base/power/opp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1581,6 +1581,9 @@ static int _opp_set_availability(struct device *dev, unsigned long freq,

opp->available = availability_req;

dev_pm_opp_get(opp);
mutex_unlock(&opp_table->lock);

/* Notify the change of the OPP availability */
if (availability_req)
blocking_notifier_call_chain(&opp_table->head, OPP_EVENT_ENABLE,
Expand All @@ -1589,8 +1592,12 @@ static int _opp_set_availability(struct device *dev, unsigned long freq,
blocking_notifier_call_chain(&opp_table->head,
OPP_EVENT_DISABLE, opp);

dev_pm_opp_put(opp);
goto put_table;

unlock:
mutex_unlock(&opp_table->lock);
put_table:
dev_pm_opp_put_opp_table(opp_table);
return r;
}
Expand Down
4 changes: 4 additions & 0 deletions drivers/cpufreq/cpufreq-dt-platdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,10 @@ static const struct of_device_id blacklist[] __initconst = {

{ .compatible = "sigma,tango4", },

{ .compatible = "ti,am33xx", },
{ .compatible = "ti,am43", },
{ .compatible = "ti,dra7", },

{ }
};

Expand Down

0 comments on commit 74de818

Please sign in to comment.