linux-stable/drivers/power/supply
Johan Hovold d0266d7ab1 Revert "power: supply: qcom_battmgr: Register the power supplies after PDR is up"
This reverts commit b43f7ddc2b.

The offending commit deferred power-supply class device registration
until the service-started notification is received.

This triggers a NULL pointer dereference during boot of the Lenovo
ThinkPad X13s and SC8280XP CRD as battery status notifications can be
received before the service-start notification:

	Unable to handle kernel NULL pointer dereference at virtual address 00000000000005c0
	...
	Call trace:
	 _acquire+0x338/0x2064
	 acquire+0x1e8/0x318
	 spin_lock_irqsave+0x60/0x88
	 _supply_changed+0x2c/0xa4
	 battmgr_callback+0x1d4/0x60c [qcom_battmgr]
	 pmic_glink_rpmsg_callback+0x5c/0xa4 [pmic_glink]
	 qcom_glink_native_rx+0x58c/0x7e8
	 qcom_glink_smem_intr+0x14/0x24 [qcom_glink_smem]
	 __handle_irq_event_percpu+0xb0/0x2d4
	 handle_irq_event+0x4c/0xb8

As trying to serialise this is non-trivial and risks missing
notifications, let's revert to registration during probe so that the
driver data is all set up once the service goes live.

The warning message during resume in case the aDSP firmware is not
running that motivated the change can be considered a feature and should
not be suppressed.

Fixes: b43f7ddc2b ("power: supply: qcom_battmgr: Register the power supplies after PDR is up")
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20240123160053.18331-1-johan+linaro@kernel.org
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2024-01-26 22:45:58 +01:00
..
88pm860x_battery.c power: supply: 88pm860x_battery: fix the return value handle for platform_get_irq() 2023-09-12 20:44:52 +02:00
88pm860x_charger.c power: supply: 88pm860x: simplify using devm 2022-11-17 23:47:23 +01:00
ab8500-bm.h power: supply: ab8500: Standardize BTI resistance 2022-02-28 11:34:31 +01:00
ab8500-chargalg.h power: supply: ab8500: Drop external charger leftovers 2022-07-17 00:51:35 +02:00
ab8500_bmdata.c power: supply: ab8500: Standardize BTI resistance 2022-02-28 11:34:31 +01:00
ab8500_btemp.c Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
ab8500_chargalg.c Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
ab8500_charger.c power: supply: ab8500_charger: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
ab8500_fg.c power: supply: ab8500_fg: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
acer_a500_battery.c power: supply: acer_a500_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
act8945a_charger.c power: supply: act8945a_charger: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
adp5061.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
apm_power.c
axp20x_ac_power.c power: supply: axp20x_ac_power: Annotate struct axp20x_ac_power with __counted_by 2023-09-22 22:54:36 +02:00
axp20x_battery.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
axp20x_usb_power.c power: supply: axp20x_usb_power: Annotate struct axp20x_usb_power with __counted_by 2023-09-22 22:54:52 +02:00
axp288_charger.c power: supply: axp288_charger: Use alt usb-id extcon on some x86 android tablets 2023-04-01 23:01:42 +02:00
axp288_fuel_gauge.c power: supply: axp288_fuel_gauge: Fix external_power_changed race 2023-05-08 15:04:53 +02:00
bd99954-charger.c power: supply: bd99954: make read-only array sub_status_reg 2023-07-19 23:12:36 +02:00
bd99954-charger.h
bq27xxx_battery.c power: supply: bq27xxx: Stop and start delayed work in suspend and resume 2023-11-15 23:13:26 +01:00
bq27xxx_battery_hdq.c
bq27xxx_battery_i2c.c power: supply: bq27xxx: Stop and start delayed work in suspend and resume 2023-11-15 23:13:26 +01:00
bq256xx_charger.c power: supply: bq256xx: fix some problem in bq256xx_hw_init 2023-11-16 20:23:41 +01:00
bq2415x_charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
bq2515x_charger.c power: supply: bq2515x: replace deprecated strncpy with strscpy 2023-10-21 00:26:51 +02:00
bq24190_charger.c power: supply: bq24190_charger: Fix "initializer element is not constant" error 2024-01-19 01:03:17 +01:00
bq24257_charger.c power: supply: bq24257_charger: Cleanup OF/ID table terminators 2023-09-12 23:50:05 +02:00
bq24735-charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
bq25890_charger.c power supply and reset changes for the 6.5 series 2023-07-03 17:23:16 -07:00
bq25980_charger.c power: supply: bq25980: replace deprecated strncpy with strscpy 2023-10-21 00:29:30 +02:00
bq25980_charger.h
charger-manager.c power: supply: charger-manager: replace deprecated strncpy with strscpy 2023-10-21 00:32:31 +02:00
collie_battery.c power: supply: collie_battery: Convert to GPIO descriptors (part 2) 2023-02-03 13:28:59 +01:00
cpcap-battery.c power: supply: cpcap-battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
cpcap-charger.c power: supply: cpcap: Drop non-DT driver matching 2023-10-13 02:38:35 +02:00
cros_peripheral_charger.c power: supply: cros_pchg: Sync port status on resume 2023-05-08 14:31:24 +02:00
cros_usbpd-charger.c power: supply: cros_usbpd: reclassify "default case!" as debug 2023-03-10 00:20:43 +01:00
cw2015_battery.c power: supply: cw2015: correct time_to_empty units in sysfs 2023-11-16 01:34:12 +01:00
da9030_battery.c power: supply: da9030_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
da9052-battery.c power: supply: da9052-battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
da9150-charger.c power: supply: da9150-charger: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
da9150-fg.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
ds2760_battery.c ARM: pxa: remove unused board files 2023-01-20 11:23:44 +01:00
ds2780_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
ds2781_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
ds2782_battery.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
generic-adc-battery.c power: supply: generic-adc-battery: style fixes 2023-03-29 22:38:57 +02:00
goldfish_battery.c power: supply: goldfish_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
gpio-charger.c
ingenic-battery.c power: supply_core: Pass pointer to battery info 2022-01-03 18:53:10 +01:00
ip5xxx_power.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
ipaq_micro_battery.c power: supply: ipaq_micro_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
isp1704_charger.c power: supply: isp1704_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
Kconfig Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
lego_ev3_battery.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
lp8727_charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
lp8788-charger.c power: supply: lp8788-charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
lt3651-charger.c
ltc2941-battery-gauge.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
ltc4162-l-charger.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
Makefile power: supply: Add driver for pm8916 lbc 2023-09-15 21:52:00 +02:00
max1721x_battery.c power: supply: max1721x: Use strscpy() is more robust and safer 2023-02-03 13:58:41 +01:00
max8903_charger.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
max8925_power.c power: supply: max8925_power: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
max8997_charger.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
max8998_charger.c
max14577_charger.c power: supply: max14577_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
max14656_charger_detector.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
max17040_battery.c power: max17040: get thermal data from adc if available 2023-09-14 16:54:46 +02:00
max17042_battery.c power: supply: max17042_battery: Do not use CONFIG_ prefix in regular C code 2023-09-12 20:54:46 +02:00
max77650-charger.c power: supply: max77650-charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
max77693_charger.c power: supply: max77693_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
max77976_charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
mm8013.c power: supply: mm8013: Fix an error checking issue in mm8013_checkdevice() 2023-09-30 21:19:16 +02:00
mp2629_charger.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
mt6360_charger.c power: supply: mt6360: add a check of devm_work_autocancel in mt6360_charger_probe 2023-05-16 00:46:53 +02:00
mt6370-charger.c Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
olpc_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
pcf50633-charger.c power: supply: pcf50633-charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
pm8916_bms_vm.c power: supply: Add pm8916 VM-BMS support 2023-09-15 21:52:00 +02:00
pm8916_lbc.c power: supply: Add driver for pm8916 lbc 2023-09-15 21:52:00 +02:00
pmu_battery.c
power_supply.h driver core: make struct class.dev_uevent() take a const * 2022-11-24 17:12:15 +01:00
power_supply_core.c power: supply: Use multiple MODULE_AUTHOR statements 2023-12-24 22:59:28 +01:00
power_supply_hwmon.c power: supply: hwmon: constify pointers to hwmon_channel_info 2023-05-08 15:33:16 +02:00
power_supply_leds.c - New Drivers 2023-07-03 11:26:05 -07:00
power_supply_sysfs.c Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
qcom_battmgr.c Revert "power: supply: qcom_battmgr: Register the power supplies after PDR is up" 2024-01-26 22:45:58 +01:00
qcom_pmi8998_charger.c power: supply: Fix null pointer dereference in smb2_probe 2023-12-24 23:43:28 +01:00
qcom_smbb.c power: supply: qcom_smbb: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
rk817_charger.c Power Supply Fixes for 6.6 cycle 2023-10-21 00:55:43 +02:00
rn5t618_power.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
rt5033_battery.c power supply and reset changes for the 6.5 series 2023-07-03 17:23:16 -07:00
rt5033_charger.c power: supply: rt5033_charger: Replace "&pdev->dev" by "charger->dev" in probe 2023-10-04 22:27:34 +02:00
rt9455_charger.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
rt9467-charger.c power: supply: rt9467: Fix rt9467_run_aicl() 2023-09-14 18:09:14 +02:00
rt9471.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
rx51_battery.c power: supply: rx51_battery: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
samsung-sdi-battery.c power: supply: samsung-sdi-battery: Add missing charge restart voltages 2022-04-13 12:05:22 +02:00
samsung-sdi-battery.h power: supply: Static data for Samsung batteries 2022-03-04 22:20:18 +01:00
sbs-battery.c power: supply: sbs-battery: Make similar OF and ID table 2023-09-12 18:25:35 +02:00
sbs-charger.c power supply and reset changes for the 6.5 series 2023-07-03 17:23:16 -07:00
sbs-manager.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
sc27xx_fuel_gauge.c power: supply: sc27xx: Fix external_power_changed race 2023-05-08 15:06:12 +02:00
sc2731_charger.c power: supply: sc2731_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
smb347-charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
surface_battery.c power: supply: surface_battery: replace deprecated strncpy with strscpy 2023-10-21 00:33:02 +02:00
surface_charger.c power: supply: surface-charger: replace deprecated strncpy with strscpy 2023-10-21 00:37:41 +02:00
test_power.c power: supply: test-power: use strscpy() instead of strncpy() 2023-02-03 13:43:48 +01:00
tps65090-charger.c power: supply: tps65090-charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
tps65217_charger.c USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
twl4030_charger.c power: supply: twl4030_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
twl4030_madc_battery.c power: supply: twl4030_madc_battery: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00
ucs1002_power.c power: supply: ucs1002: fix error code in ucs1002_get_property() 2023-09-14 17:38:02 +02:00
ug3105_battery.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
wilco-charger.c
wm97xx_battery.c power: supply: wm97xx_battery: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00
wm831x_backup.c power: supply: wm831x_backup: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00
wm831x_power.c power: supply: wm831x_power: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00
wm8350_power.c power: supply: wm8350_power: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00