Thread (13 messages) 13 messages, 4 authors, 2021-11-17

Re: [PATCH v2] thermal: imx: implement runtime PM support

From: Daniel Lezcano <hidden>
Date: 2021-10-21 07:43:19
Also in: linux-pm, lkml

On 21/10/2021 09:20, Oleksij Rempel wrote:
Hi Petr,

On Wed, Oct 20, 2021 at 05:53:03PM +0200, Petr Benes wrote:
quoted
On Wed, 20 Oct 2021 at 07:05, Oleksij Rempel [off-list ref] wrote:
quoted
Hi Petr and Michal,

I forgot to add you for v2 in CC. Please test/review this version.
Hi Oleksij,

It works good. with PM as well as without PM. The only minor issue I found is,
that the first temperature reading (when the driver probes) fails. That is
(val & soc_data->temp_valid_mask) == 0) holds true. How does
pm_runtime_resume_and_get() behave in imx_thermal_probe()?
Does it go through imx_thermal_runtime_resume() with usleep_range()?
On the first temperature reading, the PM and part of HW is not
initialized. Current probe sequence is racy and has at least following
issues:
- thermal_zone_device_register is executed before HW init was completed.
  It kind of worked before my patch, becaus part of reinit was done by
  temperature init. It  worked, since the irq_enabled flag was not set,
  but potentially would run enable_irq() two times if device is
  overheated on probe.
- the imx_thermal core is potentially disable after first race
  condition:
  CPU0					CPU1
  thermal_zone_device_register()
					imx_get_temp()
  					irq_enabled == false
						power_up
						read_temp
  power_up
  						power_down
  irq_enabled = true;

  ... at this point imx_thermal is powered down for some amount of time,
  over temperature IRQ will not be triggered for some amount of time.

- if some part after thermal_zone_device_register() would fail or
  deferred, the worker polling temperature will run in to NULL pointer.
  This issue already happened...

After migrating to runtime PM, one of issues started to be visible even
on normal conditions.
I'll send one more patch with reworking probe sequence.
Are you planning to send a v3 with this patch? Or a separate patch?

[ ... ]


-- 
<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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help