13.08.2024 18:52, Andy Shevchenko пишет: ... >>> but somewhere in the replies >>> here I would like to hear about roadmap to get rid of the >>> pm_runtime_irq_safe() in all Tegra related code. >> >> What is the problem with pm_runtime_irq_safe()? > > It's a hack. It has no reasons to stay in the kernel. It also prevents > PM from working properly (in some cases, not Tegra). Why is it a hack? Why it can't be made to work properly for all cases? >> There were multiple >> problems with RPM for this driver in the past, it wasn't trivial to make >> it work for all Tegra HW generations. Don't expect anyone would want to >> invest time into doing it all over again. > > You may always refer to the OMAP case, which used to have 12 (IIRC, > but definitely several) calls to this API and now 0. Taking the OMAP > case into consideration I believe it's quite possible to get rid of > this hack and retire the API completely. Yes, this may take months or > even years. But I would like to have this roadmap be documented. There should be alternative to the removed API. Otherwise drivers will have to have own hacks to work around the RPM limitation, re-invent own PM, or not do RPM at all. Looking at the i2c-omap.c, I see it's doing pm_runtime_get_sync() in the atomic transfer, which should cause a lockup without IRQ-safe RPM, AFAICT. The OMAP example doesn't look great so far.