linux-stable/drivers/hwmon
Robin Murphy 6d03bbff45 hwmon: (coretemp) Simplify platform device handling
Coretemp's platform driver is unconventional. All the real work is done
globally by the initcall and CPU hotplug notifiers, while the "driver"
effectively just wraps an allocation and the registration of the hwmon
interface in a long-winded round-trip through the driver core.  The whole
logic of dynamically creating and destroying platform devices to bring
the interfaces up and down is error prone, since it assumes
platform_device_add() will synchronously bind the driver and set drvdata
before it returns, thus results in a NULL dereference if drivers_autoprobe
is turned off for the platform bus. Furthermore, the unusual approach of
doing that from within a CPU hotplug notifier, already commented in the
code that it deadlocks suspend, also causes lockdep issues for other
drivers or subsystems which may want to legitimately register a CPU
hotplug notifier from a platform bus notifier.

All of these issues can be solved by ripping this unusual behaviour out
completely, simply tying the platform devices to the lifetime of the
module itself, and directly managing the hwmon interfaces from the
hotplug notifiers. There is a slight user-visible change in that
/sys/bus/platform/drivers/coretemp will no longer appear, and
/sys/devices/platform/coretemp.n will remain present if package n is
hotplugged off, but hwmon users should really only be looking for the
presence of the hwmon interfaces, whose behaviour remains unchanged.

Link: https://lore.kernel.org/lkml/20220922101036.87457-1-janusz.krzysztofik@linux.intel.com/
Link: https://gitlab.freedesktop.org/drm/intel/issues/6641
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Link: https://lore.kernel.org/r/20230103114620.15319-1-janusz.krzysztofik@linux.intel.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2023-02-03 07:30:09 -08:00
..
occ hwmon: (occ) OCC sensors aren't arch-specific 2022-12-04 16:45:02 -08:00
peci hwmon: (peci/cputemp) Fix off-by-one in coretemp_label allocation 2023-02-03 07:27:25 -08:00
pmbus hwmon: (pmbus/mpq7932) Add a support for mpq7932 Power Management IC 2023-02-03 07:30:09 -08:00
abituguru.c hwmon: (abitguru) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:11 -07:00
abituguru3.c hwmon: (abitguru3) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:11 -07:00
acpi_power_meter.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
ad7314.c
ad7414.c
ad7418.c
adc128d818.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
adcxx.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
adm1021.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adm1025.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adm1026.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adm1029.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adm1031.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adm1177.c hwmon: (adm1177) simplify using devm_regulator_get_enable() 2022-12-04 16:45:02 -08:00
adm9240.c hwmon: (adm9240) fix data race in adm9240_fan_read 2022-09-25 14:22:11 -07:00
ads7828.c
ads7871.c
adt7x10.c hwmon: (adt7x10) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
adt7x10.h hwmon: (adt7x10) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
adt7310.c hwmon: (adt7x10) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
adt7410.c hwmon: (adt7x10) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
adt7411.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adt7462.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
adt7470.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
adt7475.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
aht10.c hwmon: (aht10) Fix some kernel-doc comments 2023-02-03 07:30:09 -08:00
amc6821.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
applesmc.c
aquacomputer_d5next.c hwmon: (aquacomputer_d5next) Add support for reading calculated Aquaero sensors 2023-02-03 07:30:09 -08:00
as370-hwmon.c hwmon: (as370-hwmon) Use HWMON_CHANNEL_INFO macro 2022-05-22 11:32:31 -07:00
asb100.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
asc7621.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
aspeed-pwm-tacho.c hwmon: (aspeed-pwm-tacho) increase fan tach period (again) 2022-07-21 07:15:55 -07:00
asus-ec-sensors.c hwmon: (asus-ec-sensors) add missing mutex path 2023-02-03 07:30:00 -08:00
asus_atk0110.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
asus_wmi_sensors.c hwmon: (asus_wmi_sensors) Save a few bytes of memory 2022-07-13 08:39:42 -07:00
atxp1.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
axi-fan-control.c hwmon: Make use of devm_clk_get_enabled() 2022-09-25 14:22:11 -07:00
bt1-pvt.c hwmon: (bt1-pvt) use generic polynomial functions 2022-05-22 11:32:30 -07:00
bt1-pvt.h
coretemp.c hwmon: (coretemp) Simplify platform device handling 2023-02-03 07:30:09 -08:00
corsair-cpro.c
corsair-psu.c hwmon: (corsair-psu) Add USB id of the new HX1500i psu 2022-10-22 06:59:12 -07:00
da9052-hwmon.c
da9055-hwmon.c
dell-smm-hwmon.c hwmon: (dell-smm) Move error message to make probing silent 2022-12-04 19:34:51 -08:00
dme1737.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
drivetemp.c hwmon: (drivetemp) Add module alias 2022-07-13 08:39:42 -07:00
ds620.c
ds1621.c hwmon: use sysfs_emit() to instead of scnprintf() 2022-12-04 16:49:43 -08:00
emc6w201.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
emc1403.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
emc2103.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
emc2305.c hwmon: (emc2305) fix pwm never being able to set lower 2022-12-06 14:45:19 -08:00
f71805f.c
f71882fg.c hwmon: (f71882fg) Reorder symbols to get rid of a few forward declarations 2022-09-25 14:22:11 -07:00
f75375s.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
fam15h_power.c
fschmd.c hwmon: (fschmd) Make const arrays static const 2022-12-04 16:45:01 -08:00
ftsteutates.c hwmon: (ftsteutates) Use devm_watchdog_register_device() 2023-02-03 07:30:09 -08:00
g760a.c
g762.c
gl518sm.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
gl520sm.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
gpio-fan.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
gsc-hwmon.c hwmon: (gsc-hwmon) Switch to flexible array to simplify code 2022-12-04 16:45:03 -08:00
hih6130.c
hwmon-vid.c
hwmon.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
i5k_amb.c
i5500_temp.c hwmon: (i5500_temp) fix missing pci_disable_device() 2022-11-20 06:04:16 -08:00
ibmaem.c hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails 2022-07-01 11:53:29 -07:00
ibmpex.c hwmon: (ibmpex) Fix possible UAF when ibmpex_register_bmc() fails 2022-11-20 06:04:16 -08:00
ibmpowernv.c
iio_hwmon.c hwmon: (iio_hwmon) Make use of device properties 2022-09-19 06:17:05 -07:00
ina2xx.c
ina209.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ina238.c hwmon: Driver for Texas Instruments INA238 2021-12-26 15:02:05 -08:00
ina3221.c hwmon: (ina3221) Fix shunt sum critical calculation 2022-11-20 06:04:15 -08:00
intel-m10-bmc-hwmon.c hwmon: (intel-m10-bmc-hwmon) use devm_hwmon_sanitize_name() 2022-05-17 05:53:00 -07:00
it87.c hwmon: (it87) Add DMI table for future extensions 2022-12-04 16:45:02 -08:00
jc42.c hwmon: (jc42) Consistently use bit and bitfield macros in the driver 2022-12-04 16:45:02 -08:00
k8temp.c
k10temp.c hwmon: (k10temp): Add support for new family 17h and 19h models 2022-07-20 17:39:11 +02:00
Kconfig hwmon: add OneXPlayer mini AMD sensors driver 2022-12-04 16:45:02 -08:00
lan966x-hwmon.c hwmon: add driver for the Microchip LAN966x SoC 2022-05-22 11:32:30 -07:00
lineage-pem.c
lm63.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm70.c hwmon: (lm70) Add ti,tmp125 support 2022-02-27 17:03:19 -08:00
lm73.c hwmon: use sysfs_emit() to instead of scnprintf() 2022-12-04 16:49:43 -08:00
lm75.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm75.h hwmon: (lm75) Replace kernel.h with the necessary inclusions 2022-07-13 08:38:19 -07:00
lm77.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm78.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm80.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm83.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm85.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm87.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm90.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
lm92.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm93.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm95234.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm95241.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lm95245.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
lochnagar-hwmon.c
ltc2945.c
ltc2947-core.c hwmon: (ltc2947) fix temperature scaling 2022-11-20 06:04:15 -08:00
ltc2947-i2c.c hwmon: (ltc2947) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
ltc2947-spi.c hwmon: (ltc2947) Switch to EXPORT_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
ltc2947.h
ltc2990.c
ltc2992.c hwmon: use simple i2c probe 2022-12-04 16:45:02 -08:00
ltc4151.c
ltc4215.c
ltc4222.c
ltc4245.c
ltc4260.c
ltc4261.c
ltq-cputemp.c
Makefile hwmon: add OneXPlayer mini AMD sensors driver 2022-12-04 16:45:02 -08:00
max127.c hwmon: use simple i2c probe 2022-12-04 16:45:02 -08:00
max197.c
max1111.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
max1619.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
max1668.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
max6620.c
max6621.c
max6639.c hwmon: (max6639) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
max6642.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
max6650.c
max6697.c
max16065.c
max31722.c hwmon: (max31722) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
max31730.c hwmon: (max31730) witch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
max31760.c drivers: hwmon: Add max31760 fan speed controller driver 2022-09-20 07:10:58 -07:00
max31790.c hwmon: (max31790) add fanN_enable 2022-09-19 06:17:05 -07:00
mc13783-adc.c
mcp3021.c hwmon: (mcp3021) improve driver support for newer hwmon interface 2022-07-15 10:55:57 -07:00
menf21bmc_hwmon.c
mlxreg-fan.c hwmon: (mlxreg-fan) Use pwm attribute for setting fan speed low limit 2022-02-27 17:03:17 -08:00
mr75203.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
nct6683.c hwmon: (nct6683) remove unused variable in nct6683_create_attr_group 2022-10-02 08:01:18 -07:00
nct6775-core.c hwmon: (nct6775) Fix incorrect parenthesization in nct6775_write_fan_div() 2023-01-03 13:26:45 -08:00
nct6775-i2c.c hwmon: (nct6775) Add i2c driver 2022-05-22 11:32:31 -07:00
nct6775-platform.c hwmon: (nct6775) add ASUS CROSSHAIR VIII/TUF/ProArt B550M 2022-12-04 16:45:03 -08:00
nct6775.h hwmon: (nct6775) Fix platform driver suspend regression 2022-08-10 06:37:01 -07:00
nct7802.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
nct7904.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
npcm750-pwm-fan.c
nsa320-hwmon.c
ntc_thermistor.c hwmon: (ntc_thermistor) Underscore Samsung thermistor 2022-02-19 16:47:54 -08:00
nzxt-kraken2.c
nzxt-smart2.c hwmon: (nzxt-smart2) Add device id 2023-02-03 07:30:09 -08:00
oxp-sensors.c hwmon: (oxp-sensors) Add AYANEO AIR and AIR Pro 2023-02-03 07:30:09 -08:00
pc87360.c hwmon: (pc87360) Reorder symbols to get rid of a few forward declarations 2022-09-25 14:22:11 -07:00
pc87427.c
pcf8591.c hwmon: Include <linux/kstrtox.h> when appropriate 2022-12-04 16:45:02 -08:00
powr1220.c hwmon: (powr1220) Add support for Lattice's POWR1014 power manager IC 2022-02-27 17:03:17 -08:00
pwm-fan.c hwmon: (pwm-fan) Explicitly switch off fan power when setting pwm1_enable to 0 2022-10-16 15:52:59 -07:00
raspberrypi-hwmon.c hwmon: (raspberrypi) Exit immediately in case of error in init 2021-12-26 15:02:06 -08:00
s3c-hwmon.c
sbrmi.c hwmon: use simple i2c probe 2022-12-04 16:45:02 -08:00
sbtsi_temp.c hwmon: use simple i2c probe 2022-12-04 16:45:02 -08:00
sch56xx-common.c hwmon: (sch56xx-common) Add DMI override table 2022-07-13 08:38:19 -07:00
sch56xx-common.h
sch5627.c hwmon: (sch5627) Add pwmX_auto_channels_temp support 2022-02-27 17:03:19 -08:00
sch5636.c hwmon: (sch56xx) Autoload modules on platform device creation 2022-02-27 17:03:17 -08:00
scmi-hwmon.c hwmon: (scmi) Register explicitly with Thermal Framework 2022-11-04 16:47:01 -07:00
scpi-hwmon.c hwmon/drivers/core: Switch to new of thermal API 2022-08-17 14:09:39 +02:00
sht3x.c hwmon: use sysfs_emit() to instead of scnprintf() 2022-12-04 16:49:43 -08:00
sht4x.c hwmon: use simple i2c probe 2022-12-04 16:45:02 -08:00
sht15.c hwmon: (sht15) Fix wrong assumptions in device remove callback 2022-07-26 07:00:27 -07:00
sht21.c
shtc1.c
sis5595.c hwmon: (sis5595) Reorder symbols to get rid of a few forward declarations 2022-09-25 14:22:11 -07:00
sl28cpld-hwmon.c hwmon: (sl28cpld) Fix typo in comment 2022-05-22 11:32:32 -07:00
smm665.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
smpro-hwmon.c hwmon: (smpro-hwmon) Improve switch statments in smpro_is_visible() 2022-12-04 16:45:02 -08:00
smsc47b397.c
smsc47m1.c
smsc47m192.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
sparx5-temp.c hwmon: (sparx5) Use devm_clk_get_enabled() helper 2022-09-19 06:17:05 -07:00
stts751.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
sy7636a-hwmon.c hwmon: sy7636a: Add temperature driver for sy7636a 2022-02-08 09:27:33 +00:00
tc74.c
tc654.c hwmon: (tc654) Add thermal_cooling device support 2022-02-27 17:03:18 -08:00
thmc50.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
tmp102.c hwmon: (tmp102) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
tmp103.c hwmon: (tmp103) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
tmp108.c hwmon: (tmp108) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
tmp401.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
tmp421.c hwmon: move from strlcpy with unused retval to strscpy 2022-09-19 06:17:05 -07:00
tmp464.c hwmon: Add driver for Texas Instruments TMP464 and TMP468 2022-03-03 07:40:42 -08:00
tmp513.c
tps23861.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
ultra45_env.c
vexpress-hwmon.c hwmon: (vexpress-hwmon) Use of_device_get_match_data() 2022-03-08 09:15:22 -08:00
via-cputemp.c
via686a.c hwmon: (via686a) Reorder symbols to get rid of a few forward declarations 2022-09-25 14:22:11 -07:00
vt1211.c
vt8231.c hwmon: Remove some useless #include <linux/hwmon-vid.h> 2022-12-04 16:45:02 -08:00
w83l785ts.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
w83l786ng.c hwmon: Remove some useless #include <linux/hwmon-vid.h> 2022-12-04 16:45:02 -08:00
w83627ehf.c hwmon: (w83627ehf) Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-09-25 14:22:12 -07:00
w83627hf.c hwmon: w83627hf: Reorder symbols to get rid of a few forward declarations 2022-09-26 15:21:33 -07:00
w83773g.c
w83781d.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
w83791d.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
w83792d.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
w83793.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
w83795.c hwmon updates for v6.1 2022-10-04 19:02:54 -07:00
wm831x-hwmon.c
wm8350-hwmon.c
xgene-hwmon.c hwmon: (xgene-hwmon) Add free before exiting xgene_hwmon_probe 2021-12-28 08:04:10 -08:00