On 05.08.21 12:18, Frieder Schrempf wrote: > On 21.07.21 22:46, Lucas Stach wrote: >> Hi all, >> >> second revision of the GPC improvements and BLK_CTRL driver to make use >> of all the power-domains on the i.MX8MM. I'm not going to repeat the full >> blurb from the v1 cover letter here, but if you are not familiar with >> i.MX8MM power domains, it may be worth a read. >> >> This 2nd revision fixes the DT bindings to be valid yaml, some small >> failure path issues and most importantly the interaction with system >> suspend/resume. With the previous version some of the power domains >> would not come up correctly after a suspend/resume cycle. >> >> Updated testing git trees here, disclaimer still applies: >> https://git.pengutronix.de/cgit/lst/linux/log/?h=imx8m-power-domains >> https://git.pengutronix.de/cgit/lst/linux/log/?h=imx8m-power-domains-testing > > I finally did some tests on my side using USB, GPU and DSI (no PCIe, VPU, CSI so far) and the results are promising. Thanks for the effort! > > I will try to run some more automated suspend/resume and reboot test cycles over the weekend and report the results here afterwards. > Unfortunately I got some results sooner than I had hoped. I set up a simple loop to suspend/resume every few seconds and on the first run it took around 2-3 hours for the device to lock up on resume. On the second run it took less than half an hour. I had glmark2-es2-drm running in the background, but it looks like it crashed at some point before the lockup occurred. Of course this could also be unrelated and caused by some peripheral driver or something but the first suspicion is definitely the power domains. If you have any suggestions for which debug options to enable or where to add some printks, please let me know. If I do another run I would like to make sure that the resulting logs are helpful for debugging. And I would appreciate if someone else could try to reproduce this problem on his/her side. I use this simple script for testing: #!/bin/sh glmark2-es2-drm & while true; do echo +10 > /sys/class/rtc/rtc0/wakealarm echo mem > /sys/power/state sleep 5 done;