Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pm-4.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull power management fixes from Rafael Wysocki:
"These fix up recently added features (the Kryo cpufreq driver and
performance states coverage in the generic power domains framework),
add missing documentation for a recently added sysfs knob in the
intel_pstate driver and fix an error in its documentation.

Specifics:

- Fix the initialization time error handling in the recently added
Kryo cpufreq driver (Dan Carpenter).

- Fix up the recently added coverage of performance states in the
generic power domains (genpd) framework (Viresh Kumar).

- Add missing documentation of the new hwp_dynamic_boost sysfs knob
in the intel_pstate driver (Rafael Wysocki).

- Fix incorrect sysfs path in the intel_pstate driver documentation
(Rafael Wysocki)"

* tag 'pm-4.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
Documentation: intel_pstate: Describe hwp_dynamic_boost sysfs knob
Documentation: admin-guide: intel_pstate: Fix sysfs path
PM / Domains: Rename opp_node to np
PM / Domains: Fix return value of of_genpd_opp_to_performance_state()
cpufreq: qcom-kryo: Fix error handling in probe()

+22 -13
+12 -2
Documentation/admin-guide/pm/intel_pstate.rst
··· 324 324 325 325 ``intel_pstate`` exposes several global attributes (files) in ``sysfs`` to 326 326 control its functionality at the system level. They are located in the 327 - ``/sys/devices/system/cpu/cpufreq/intel_pstate/`` directory and affect all 328 - CPUs. 327 + ``/sys/devices/system/cpu/intel_pstate/`` directory and affect all CPUs. 329 328 330 329 Some of them are not present if the ``intel_pstate=per_cpu_perf_limits`` 331 330 argument is passed to the kernel in the command line. ··· 377 378 supplied to the ``CPUFreq`` core and exposed via the policy interface, 378 379 but it affects the maximum possible value of per-policy P-state limits 379 380 (see `Interpretation of Policy Attributes`_ below for details). 381 + 382 + ``hwp_dynamic_boost`` 383 + This attribute is only present if ``intel_pstate`` works in the 384 + `active mode with the HWP feature enabled <Active Mode With HWP_>`_ in 385 + the processor. If set (equal to 1), it causes the minimum P-state limit 386 + to be increased dynamically for a short time whenever a task previously 387 + waiting on I/O is selected to run on a given logical CPU (the purpose 388 + of this mechanism is to improve performance). 389 + 390 + This setting has no effect on logical CPUs whose minimum P-state limit 391 + is directly set to the highest non-turbo P-state or above it. 380 392 381 393 .. _status_attr: 382 394
+3 -4
drivers/base/power/domain.c
··· 2487 2487 * power domain corresponding to a DT node's "required-opps" property. 2488 2488 * 2489 2489 * @dev: Device for which the performance-state needs to be found. 2490 - * @opp_node: DT node where the "required-opps" property is present. This can be 2490 + * @np: DT node where the "required-opps" property is present. This can be 2491 2491 * the device node itself (if it doesn't have an OPP table) or a node 2492 2492 * within the OPP table of a device (if device has an OPP table). 2493 - * @state: Pointer to return performance state. 2494 2493 * 2495 2494 * Returns performance state corresponding to the "required-opps" property of 2496 2495 * a DT node. This calls platform specific genpd->opp_to_performance_state() ··· 2498 2499 * Returns performance state on success and 0 on failure. 2499 2500 */ 2500 2501 unsigned int of_genpd_opp_to_performance_state(struct device *dev, 2501 - struct device_node *opp_node) 2502 + struct device_node *np) 2502 2503 { 2503 2504 struct generic_pm_domain *genpd; 2504 2505 struct dev_pm_opp *opp; ··· 2513 2514 2514 2515 genpd_lock(genpd); 2515 2516 2516 - opp = of_dev_pm_opp_find_required_opp(&genpd->dev, opp_node); 2517 + opp = of_dev_pm_opp_find_required_opp(&genpd->dev, np); 2517 2518 if (IS_ERR(opp)) { 2518 2519 dev_err(dev, "Failed to find required OPP: %ld\n", 2519 2520 PTR_ERR(opp));
+4 -4
drivers/cpufreq/qcom-cpufreq-kryo.c
··· 87 87 int ret; 88 88 89 89 cpu_dev = get_cpu_device(0); 90 - if (NULL == cpu_dev) 91 - ret = -ENODEV; 90 + if (!cpu_dev) 91 + return -ENODEV; 92 92 93 93 msm8996_version = qcom_cpufreq_kryo_get_msm_id(); 94 94 if (NUM_OF_MSM8996_VERSIONS == msm8996_version) { ··· 97 97 } 98 98 99 99 np = dev_pm_opp_of_get_opp_desc_node(cpu_dev); 100 - if (IS_ERR(np)) 101 - return PTR_ERR(np); 100 + if (!np) 101 + return -ENOENT; 102 102 103 103 ret = of_device_is_compatible(np, "operating-points-v2-kryo-cpu"); 104 104 if (!ret) {
+3 -3
include/linux/pm_domain.h
··· 234 234 int of_genpd_parse_idle_states(struct device_node *dn, 235 235 struct genpd_power_state **states, int *n); 236 236 unsigned int of_genpd_opp_to_performance_state(struct device *dev, 237 - struct device_node *opp_node); 237 + struct device_node *np); 238 238 239 239 int genpd_dev_pm_attach(struct device *dev); 240 240 struct device *genpd_dev_pm_attach_by_id(struct device *dev, ··· 274 274 275 275 static inline unsigned int 276 276 of_genpd_opp_to_performance_state(struct device *dev, 277 - struct device_node *opp_node) 277 + struct device_node *np) 278 278 { 279 - return -ENODEV; 279 + return 0; 280 280 } 281 281 282 282 static inline int genpd_dev_pm_attach(struct device *dev)