Hello Nikita On 07/12/17 08:48, Nikita Yushchenko wrote: > Hello. > > Writing this mail to commiters to rcar-du and vsp1 drivers in kernel branch > v4.9/rcar-3.5.9 of > git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas-bsp.git - which > AFAIU is the latest BSP kernel for Renesas Gen3 SoCs. Suspend resume is known not to work on this kernel version for VSP1 and rcar-du on Gen3. You could potentially back-port the relevant patches, but I have not looked at the dependencies required for this: I believe the VSP1 was fixed with the following patch series: [PATCH v5 0/2] v4l: vsp1: Fix suspend/resume and race on M2M pipelines [PATCH v5 1/2] v4l: vsp1: Move vsp1_video_setup_pipeline() [PATCH v5 2/2] v4l: vsp1: Repair suspend resume operations for video pipelines And the RCar DU was fixed with the following patches: [PATCH v2 0/3] drm/media: Implement DU Suspend and Resume on VSP pipelines (1/3 is v3 "media: vsp1" below) [PATCH v2 2/3] drm: rcar-du: Add suspend resume helpers [PATCH v2 3/3] drm: rcar-du: Remove unused CRTC suspend/resume functions [PATCH v3] media: vsp1: Prevent suspending and resuming DRM pipelines All of the above patches were posted to the linux-renesas-soc mailinglist, and should be available in the archives. The best source of the patches would be the tag: renesas-drivers-2017-11-28-v4.15-rc1 from git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git, which should be functional for suspend/resume on both VSP1 and rcar-du. > I'm trying to make swsusp (i.e echo disk > /sys/power/state) working on > r8a7796-m3ulcb board. > > I'm facing an issue with suspend/resume routines of rcar-du driver. > > Currently, suspend-to-mem works on this target. I can run > # i2cset -f -y 7 0x30 0x20 0x0F > # echo mem > /sys/power/state > and target suspends. Then, I can press power button and target resumes, > including image on HDMI-connected display. > > However, if I try > > # echo devices > /sys/power/pm_test > # echo mem > /sys/power/state > > which should terminate suspend process after calling drivers method and resume > immediately, rcar-du resume fails: > > [ 75.233956] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* > [CRTC:53:crtc-1] flip_done timed out > [ 85.474009] [drm:drm_atomic_helper_commit_cleanup_done] *ERROR* > [CRTC:53:crtc-1] flip_done timed out Yes, this looks like the expected errors. > Same will happen on any other variants of /sys/power/pm_test. > Resume of rcar-du will only succeed of CPU really goes sleep after suspend of > rcar-du. > > I've tried a test that calls rcar-du's suspend method, sleeps a bit and calls > rcar-du's resume method - and that breaks display. In particular, VSP interrupts > no longer arrive. Although the VSP hardware programming sequence looks exactly > the same as on normal driver startup or on blank-unblank path. > > For swsusp (and also for suspend-to-mem error paths) it is required that > driver's resume method undoes what driver's suspend method does, so this > behavior is definitely a bug. > > Could you please help debugging this? Backporting the patches, or moving to latest kernel versions would be the resolution here. > Nikita Yushchenko, > system sw engineer at cogentembedded.com -- Regards Kieran