Enable runtime PM before registering the fbdev emulation and disable it afterward, otherwise register access to the LTDC IP during the fbdev emulation registration might hang the system. The problem happens because RPM is activated at the end of ltdc_load(), but the fbdev emulation registration happens only after that, and ends up calling ltdc_crtc_mode_set_nofb(), which checks whether RPM is active and only if it is not active, calls pm_runtime_get_sync() to enable the clock and so on. If the clock are not enabled, any register access in ltdc_crtc_mode_set_nofb() could hang the platform completely. This patch makes sure that ltdc_crtc_mode_set_nofb() is called within pm_runtime_get_sync(), so with clock enabled. Signed-off-by: Marek Vasut <marex@xxxxxxx> Cc: Alexandre Torgue <alexandre.torgue@xxxxxx> Cc: Benjamin Gaignard <benjamin.gaignard@xxxxxx> Cc: Philippe Cornu <philippe.cornu@xxxxxx> Cc: Yannick Fertré <yannick.fertre@xxxxxx> Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx Cc: linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx --- drivers/gpu/drm/stm/drv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c index 411103f013e2..d8921edc83db 100644 --- a/drivers/gpu/drm/stm/drv.c +++ b/drivers/gpu/drm/stm/drv.c @@ -197,7 +197,9 @@ static int stm_drm_platform_probe(struct platform_device *pdev) if (ret) goto err_put; + pm_runtime_get_sync(ddev->dev); drm_fbdev_generic_setup(ddev, 16); + pm_runtime_put_sync(ddev->dev); return 0; -- 2.28.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel