1
linux/drivers/cpufreq
Rafael J. Wysocki 1a1030d10a cpufreq: intel_pstate: Rearrange locking in hybrid_init_cpu_capacity_scaling()
Notice that hybrid_init_cpu_capacity_scaling() only needs to hold
hybrid_capacity_lock around __hybrid_init_cpu_capacity_scaling()
calls, so introduce a "locked" wrapper around the latter and call
it from the former.  This allows to drop a local variable and a
label that are not needed any more.

Also, rename __hybrid_init_cpu_capacity_scaling() to
__hybrid_refresh_cpu_capacity_scaling() for consistency.

Interestingly enough, this fixes a locking issue introduced by commit
929ebc93cc ("cpufreq: intel_pstate: Set asymmetric CPU capacity on
hybrid systems") that put an arch_enable_hybrid_capacity_scale() call
under hybrid_capacity_lock, which was a mistake because the latter is
acquired in CPU hotplug paths and so it cannot be held around
cpus_read_lock() calls.

Link: https://lore.kernel.org/linux-pm/SJ1PR11MB6129EDBF22F8A90FC3A3EDC8B9582@SJ1PR11MB6129.namprd11.prod.outlook.com/
Fixes: 929ebc93cc ("cpufreq: intel_pstate: Set asymmetric CPU capacity on hybrid systems")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reported-by: "Borah, Chaitanya Kumar" <chaitanya.kumar.borah@intel.com>
Link: https://patch.msgid.link/12554508.O9o76ZdvQC@rjwysocki.net
[ rjw: Changelog update ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-11-11 15:18:41 +01:00
..
acpi-cpufreq.c x86/amd: Rename amd_get_highest_perf() to amd_get_boost_ratio_numerator() 2024-09-11 10:23:22 -05:00
amd_freq_sensitivity.c cpufreq: amd_freq_sensitivity: Add missing pci_dev_put() 2022-11-30 19:50:04 +01:00
amd-pstate-trace.c cpufreq: amd-pstate: Add trace for AMD P-State module 2021-12-30 18:51:39 +01:00
amd-pstate-trace.h cpufreq: amd-pstate: Add more tracepoint for AMD P-State module 2022-03-09 19:53:01 +01:00
amd-pstate-ut.c second round of amd-pstate changes for 6.12 (second try): 2024-09-11 18:22:23 +02:00
amd-pstate.c cpufreq/amd-pstate: Use nominal perf for limits when boost is disabled 2024-10-15 23:54:15 -05:00
amd-pstate.h cpufreq/amd-pstate: Export symbols for changing modes 2024-09-11 10:23:23 -05:00
apple-soc-cpufreq.c cpufreq: Fix warning on unused of_device_id tables for !CONFIG_OF 2024-09-04 20:43:59 +05:30
armada-8k-cpufreq.c cpufreq: armada-8k: Avoid excessive stack usage 2024-08-07 12:11:46 +05:30
armada-37xx-cpufreq.c cpufreq: Explicitly include correct DT includes 2023-07-20 16:01:57 +05:30
bmips-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
brcmstb-avs-cpufreq.c cpufreq: brcmstb-avs-cpufreq: ISO C90 forbids mixed declarations 2024-04-25 10:36:40 +05:30
cppc_cpufreq.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cpufreq_conservative.c cpufreq: conservative: Simplify the condition of storing 'down_threshold' 2023-10-06 21:55:13 +02:00
cpufreq_governor_attr_set.c cpufreq: Move to_gov_attr_set() to cpufreq.h 2022-02-04 19:22:34 +01:00
cpufreq_governor.c cpufreq: governor: Free dbs_data directly when gov->init() fails 2023-08-29 20:21:35 +02:00
cpufreq_governor.h cpufreq: governor: Use kobject release() method to free dbs_data 2022-04-13 15:22:41 +02:00
cpufreq_ondemand.c cpufreq: Remove references to 10ms min sampling rate 2024-02-24 15:02:33 +01:00
cpufreq_ondemand.h
cpufreq_performance.c
cpufreq_powersave.c
cpufreq_stats.c cpufreq: stats: Fix buffer overflow detection in trans_stats() 2023-10-24 22:02:06 +02:00
cpufreq_userspace.c cpufreq: userspace: Move is_managed indicator into per-policy structure 2023-10-06 22:01:26 +02:00
cpufreq-dt-platdev.c cpufreq: Add SM7325 to cpufreq-dt-platdev blocklist 2024-09-04 20:43:59 +05:30
cpufreq-dt.c cpufreq: Use of_property_present() 2024-08-07 12:11:45 +05:30
cpufreq-dt.h
cpufreq-nforce2.c cpufreq: nforce2: Remove empty exit() callback 2024-07-05 11:41:30 +05:30
cpufreq.c cpufreq: Remove LATENCY_MULTIPLIER 2024-08-02 15:56:38 +02:00
davinci-cpufreq.c cpufreq: davinci: Convert to platform remove callback returning void 2023-07-20 16:02:13 +05:30
e_powersaver.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
elanfreq.c
freq_table.c cpufreq: Fix up printing large CPU numbers and frequency values 2024-04-30 12:55:01 +02:00
gx-suspmod.c
highbank-cpufreq.c cpufreq: Add __init annotation to module init funcs 2022-09-26 11:15:04 +05:30
imx6q-cpufreq.c cpufreq: imx6: use regmap to read ocotp register 2024-01-23 11:36:21 +05:30
imx-cpufreq-dt.c cpufreq: imx-cpufreq-dt: Convert to platform remove callback returning void 2023-07-20 16:02:13 +05:30
intel_pstate.c cpufreq: intel_pstate: Rearrange locking in hybrid_init_cpu_capacity_scaling() 2024-11-11 15:18:41 +01:00
Kconfig cpufreq: Drop CONFIG_ARM and CONFIG_ARM64 dependency on Arm drivers 2024-09-04 20:43:58 +05:30
Kconfig.arm cpufreq: Enable COMPILE_TEST on Arm drivers 2024-09-04 20:43:58 +05:30
Kconfig.powerpc
Kconfig.x86 cpufreq: amd-pstate: Make amd-pstate unit tests depend on amd-pstate 2024-06-24 13:17:56 -05:00
kirkwood-cpufreq.c cpufreq: kirkwood: Convert to platform remove callback returning void 2023-07-20 16:02:13 +05:30
longhaul.c cpufreq: longhaul: Fix kernel-doc param for longhaul_setstate 2024-05-28 12:20:13 +05:30
longhaul.h
longrun.c
loongson2_cpufreq.c cpufreq: loongson2: Remove empty exit() callback 2024-07-05 11:41:46 +05:30
loongson3_cpufreq.c cpufreq: loongson3: Use raw_smp_processor_id() in do_service_request() 2024-09-04 20:43:59 +05:30
Makefile cpufreq: Add Loongson-3 CPUFreq driver support 2024-07-09 08:45:43 +05:30
maple-cpufreq.c cpufreq: powerpc: add missing MODULE_DESCRIPTION() macros 2024-08-02 14:45:20 +02:00
mediatek-cpufreq-hw.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
mediatek-cpufreq.c cpufreq: Fix warning on unused of_device_id tables for !CONFIG_OF 2024-09-04 20:43:59 +05:30
mvebu-cpufreq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
omap-cpufreq.c cpufreq: omap: Drop asm includes 2024-08-07 12:11:46 +05:30
p4-clockmod.c
pasemi-cpufreq.c cpufreq: powerpc: add missing MODULE_DESCRIPTION() macros 2024-08-02 14:45:20 +02:00
pcc-cpufreq.c cpufreq: pcc: Remove empty exit() callback 2024-07-05 11:42:00 +05:30
pmac32-cpufreq.c powerpc: rename SPRN_HID2 define to SPRN_HID2_750FX 2024-05-08 00:25:00 +10:00
pmac64-cpufreq.c ARM cpufreq updates for 6.12 2024-09-06 20:50:46 +02:00
powernow-k6.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
powernow-k7.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
powernow-k7.h
powernow-k8.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
powernow-k8.h
powernv-cpufreq.c ARM cpufreq updates for 6.12 2024-09-06 20:50:46 +02:00
ppc_cbe_cpufreq_pervasive.c
ppc_cbe_cpufreq_pmi.c cpufreq: Explicitly include correct DT includes 2023-07-20 16:01:57 +05:30
ppc_cbe_cpufreq.c cpufreq: powerpc: add missing MODULE_DESCRIPTION() macros 2024-08-02 14:45:20 +02:00
ppc_cbe_cpufreq.h
pxa2xx-cpufreq.c cpufreq: pxa3: move clk register access to clk driver 2022-05-07 22:55:49 +02:00
pxa3xx-cpufreq.c cpufreq: pxa3: move clk register access to clk driver 2022-05-07 22:55:49 +02:00
qcom-cpufreq-hw.c cpufreq: qcom: Add explicit io.h include for readl/writel_relaxed 2024-08-07 12:11:46 +05:30
qcom-cpufreq-nvmem.c cpufreq: Fix warning on unused of_device_id tables for !CONFIG_OF 2024-09-04 20:43:59 +05:30
qoriq-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
raspberrypi-cpufreq.c cpufreq: raspberrypi: Convert to platform remove callback returning void 2023-07-20 16:02:13 +05:30
s3c64xx-cpufreq.c
s5pv210-cpufreq.c
sa1110-cpufreq.c ARM: sa1100: remove unused board files 2023-01-12 10:53:12 +01:00
sc520_freq.c
scmi-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
scpi-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
sh-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
sparc-us2e-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
sparc-us3-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
spear-cpufreq.c cpufreq: spear: Use of_property_for_each_u32() instead of open coding 2024-08-07 12:11:45 +05:30
speedstep-centrino.c ARM cpufreq updates for 6.11 2024-07-09 17:58:20 +02:00
speedstep-ich.c
speedstep-lib.c
speedstep-lib.h
speedstep-smi.c
sti-cpufreq.c cpufreq: Use of_property_present() 2024-08-07 12:11:45 +05:30
sun50i-cpufreq-nvmem.c cpufreq: Use of_property_present() 2024-08-07 12:11:45 +05:30
tegra20-cpufreq.c Devicetree updates for v6.4, part 2: 2023-04-27 10:09:05 -07:00
tegra124-cpufreq.c cpupfreq: tegra124: eliminate uses of of_node_put() 2024-04-19 11:55:44 +05:30
tegra186-cpufreq.c cpufreq: tegra186: Convert to platform remove callback returning void 2023-07-20 16:02:13 +05:30
tegra194-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30
ti-cpufreq.c cpufreq: ti-cpufreq: Use socinfo to get revision in AM62 family 2024-09-04 20:43:59 +05:30
vexpress-spc-cpufreq.c cpufreq: Make cpufreq_driver->exit() return void 2024-07-09 08:45:30 +05:30