Re: tps65219/am62p kernel oops

Shree Ramamoorthy
2025-12-09T18:16:13Z

Hi Francesco,

On 12/9/25 7:43 AM, Francesco Dolcini wrote:
> Hello Shree,
>
> On Thu, May 01, 2025 at 10:32:12AM -0500, Shree Ramamoorthy wrote:
>> On 4/30/25 5:21 AM, Francesco Dolcini wrote:
>>> On Wed, Apr 30, 2025 at 10:01:14AM +0200, Francesco Dolcini wrote:
>>>> On Tue, Apr 29, 2025 at 06:52:40PM +0200, Andreas Kemnade wrote:
>>>>> Am Tue, 29 Apr 2025 15:21:19 +0200
>>>>> schrieb Francesco Dolcini <francesco@dolcini.it>:
>>>>>
>>>>>> Hello all,
>>>>>> while working on adding support in mainline for a new board based on TI
>>>>>> AM62P SoC I noticed the following Kernel Oops.
>>>>>>
>>>>>> This oops was reproduced running current Linux
>>>>>> master, 6.15.0-rc4+, ca91b9500108d4cf083a635c2e11c884d5dd20ea, but I was able
>>>>>> to reproduce the same with 6.14.4.
>>>>>>
>>>>> [...]
>>>>>> [ +0.000022] Call trace:
>>>>>> [ +0.000011] regulator_notifier_call_chain+0x20/0xa4 (P)
>>>>>> [ +0.000018] tps65219_regulator_irq_handler+0x34/0x80
>>>>> wild guessing: maybe because irqdata->rdev is not initalized in
>>>>> _probe()? At least I do not see where it would be initialized.
>>>> your wild guess seems correct, I'll send a proper patch with your
>>>> suggested-by after doing a couple of more tests, thanks.
>>> so, the bug is clear, however the fix is not an obvious one liner as I was
>>> wishing.
>>>
>>> we would need to add a link from each of the interrupts to the specific
>>> regulator. as of now such a connection is not existing in the code.
>> I'll try out implementing and testing the solution, but will get to it early next week. Will email with any updates!
> What's the status on this? Were you able to do any progress or work on
> it?
>
> Thanks
> Francesco

Thanks for following up on this, the task got lost on my end. My apologies!
The original line deleted `irq_data[i].rdev = rdev;` was never replaced.
The correct code should be re-implementing a version of the tps65219_get_rdev_by_name() function that was removed in commit 64a6b57
& add in irq_data.rdev = rdev;` where the other irq_data fields are being assigned within _probe.

Is there anything missing with this solution?

Thanks!

>

--
Best,
Shree Ramamoorthy
PMIC Software Engineer