Message ID | 20181110111654.4387-1-laurent.pinchart@ideasonboard.com (mailing list archive) |
---|---|
Headers | show |
Series | omapdrm: Fix runtime PM issues at module load and unload time | expand |
On 10/11/18 13:16, Laurent Pinchart wrote: > Hello, > > This series fixes crashes in the omapdss driver at both load and unload > time, due to runtime PM problems related to probe deferral. The bugs got > introduced in v4.20-rc, this should thus be considered as v4.20 fixes. > > At the core of the problem comes commit 27d624527d99 ("drm/omap: dss: > Acquire next dssdev at probe time") which can cause probe deferral for > the DSS when the encoder and panel modules are not loaded yet. As the > omapdss module contains drivers for the DSS and all its children, this > results in the internal encoders being probed before the DSS. Missing > runtime PM handling around register access then caused imprecise > external aborts. > > Patch 1/4 moves population of the DSS children from arch code to the > omapdss driver. This prevents the DSS children from being probed before > the DSS. The change can be considered as a workaround in the sense that > runtime PM of the DSS children should operate correctly even when the > DSS probe fail. However, given that reducing the amount of arch code is > an improvement in itself, I believe the solution to be acceptable. > > Patches 2/4 and 3/4 then ensure that the HDMI4 and DSI devices are > active at bind and probe time respectively, in order to access hardware > registers there. > > Patch 4/4 finally fixes the internal encoders crash in their runtime PM > handlers by moving DISPC runtime PM state management to omapdrm. This is > the biggest change compared to v3 that went for a less intrusive (in my > opinion at least) workaround. As Tomi and Tony were in favour of a real > fix instead of a workaround, I gave the RFC fix more testing on > Beagleboard, Pandaboard and AM57xx EVM and concluded it should be safe. > > Patch 1/4 touches both the mach-omap2 and omapdss, and has been acked by > Tony to be merged through the DRM tree. > > Laurent Pinchart (4): > drm/omap: Populate DSS children in omapdss driver > drm/omap: hdmi4: Ensure the device is active during bind > drm/omap: dsi: Ensure the device is active during probe > drm/omap: Move DISPC runtime PM handling to omapdrm > > arch/arm/mach-omap2/display.c | 111 +++++++++++++--------------- > drivers/gpu/drm/omapdrm/dss/dsi.c | 14 ++-- > drivers/gpu/drm/omapdrm/dss/dss.c | 11 ++- > drivers/gpu/drm/omapdrm/dss/hdmi4.c | 37 +++------- > drivers/gpu/drm/omapdrm/dss/hdmi5.c | 27 ------- > drivers/gpu/drm/omapdrm/dss/venc.c | 7 -- > drivers/gpu/drm/omapdrm/omap_crtc.c | 6 ++ > 7 files changed, 83 insertions(+), 130 deletions(-) Thanks, looks good to me. I'll push to drm-misc-fixes. Tomi