Re: [PATCH] power: supply: core: return -EAGAIN on uninitialized read temp

From: Daniel Lezcano
Date: Mon Jul 15 2024 - 05:41:45 EST


On 15/07/2024 11:30, Neil Armstrong wrote:
On 05/07/2024 10:08, Daniel Lezcano wrote:
On 05/07/2024 07:56, Krzysztof Kozlowski wrote:
On 04/07/2024 18:41, Daniel Lezcano wrote:
On 04/07/2024 10:52, Neil Armstrong wrote:
If the thermal core tries to update the temperature from an
uninitialized power supply, it will swawn the following warning:
thermal thermal_zoneXX: failed to read out thermal zone (-19)

But reading from an uninitialized power supply should not be
considered as a fatal error, but the thermal core expects
the -EAGAIN error to be returned in this particular case.

So convert -ENODEV as -EAGAIN to express the fact that reading
temperature from an uninitialized power supply shouldn't be
a fatal error, but should indicate to the thermal zone it should
retry later.

It notably removes such messages on Qualcomm platforms using the
qcom_battmgr driver spawning warnings until the aDSP firmware
gets up and the battery manager reports valid data.

Is it possible to have the aDSP firmware ready first ?

I don't think so. ADSP firmware is a file, so as every firmware it can
be loaded from rootfs, not initramfs (unlike this driver), or even missing.

Ok, said differently, can't we initialize the thermal zone after the firmware is loaded ?

This is the goal, but this can't be a fix but a proper rework.

Right, it is a design issue and we are finding this problem in several drivers using the thermal zone. Unfortunately that forces the thermal core to do cumbersome mechanisms because of this and obviously it is a friction for thermal core cleanups / rework. IOW, bad driver design => thermal core impacted.

I think changing power_supply_core.c is not the right solution.

From my POV, it is the right solution but I agree it could take a cycle or more to fix.

qcom_battmgr_bat_get_property() should return -EAGAIN instead of
-ENODEV.

Yes, we can do that in the first place and come back to solve this firmware / async issue in a more generic way later


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog