More readable with quote character sorry for the duplicate. Hi Hariprasad,
Hi Kory Maincent.
On Tue, 26 Mar 2019 at 13:21, Köry Maincent <kory.maincent@navocap.com <mailto:kory.maincent@navocap.com>> wrote:
Hello,
I got a kernel warning on the reboot of my embedded board, and sometimes I got stuck in the reboot. I work on the IMX6Q with a PMIC da9063 and the last kernel release.
It happens in the /da9063_wdt_restart/ function at the /regmap_write/ call in the CONTROL_F register. (drivers/watchdog/da9063_wdt.c)
From trace we are able figure out the flow,
reboot | | invokes system call(sys_reboot) | | watchdog_restart)notifier | | da9063_wdt_restart | | It sending I2c rear/write commands.
Is this expected behaviour ??
Yes it is.
If I access to other register in that function, I don't have this issue. The reason could be ,you are accessing other registers directly not through I2C. I was wrong on this point, because of bad order debug printing in the drivers.
I manage to avoid the issue with a hotfix : adding rcu_read_unlock(); before I2C writing in the da9063_wdt_restart function. There is no more koops warning neither freezing reboot. I don't think it is a clean patch and I don't understand the relation to preemption. It may happens because of an RCU critical section not closed? Regards Kory.